{
  "endpoint": "https://otherworldlabs.com/square-footage-by-room/api.json",
  "page": "https://otherworldlabs.com/square-footage-by-room/",
  "what_it_answers": "For rooms the reader types as rectangles, triangles, circles and L-shapes, what each room's area is in square feet, what they come to footed together, what the waste allowance the reader types adds to that footing, what quantity that makes to order, and what the order comes to at the unit price the reader types. Four shape formulas, summed across named rooms, then turned into material and money by two figures the reader supplies.",
  "shape": "A static document, not a service. There is no request to make and nothing is posted anywhere: this file is the engine written out, so an agent can answer the question without the page and get the same figures the page prints. The engine itself is the script with the id core in the page above, and its flat answer is the function apiOutputs(state), whose keys are the outputs listed below in that order.",
  "units": "Feet, square feet, percent and United States dollars. No volume, no weight and no second length unit: this engine computes an area and never converts it to anything else. A diameter is a diameter and never a radius, because a tape crosses a bed and does not start in its middle.",
  "the_page_supplies_no_figure": "Every figure in this arithmetic is the reader's own. The waste allowance and the unit price are read off the quote or the box they hold, and the page ships with every box EMPTY - no allowance, no price and no measurement of its own - so its first state is the waiting state and not an answer. It holds no usual, standard, typical or recommended allowance, price or coverage. It names no product, brand, grade, thickness, pattern, adhesive, underlay or supplier, it says nothing about fitting, and no figure it returns is a judgement about a room, a material or a quote. One reading is the engine's rather than the reader's and is reported as such: a figure typed outside the range its own box offers is read at the nearer end of that range (see reading_at_a_limit), and the page prints the figure it READ under a label that says so, beside a sentence naming both figures. No label on the page says a figure was typed.",
  "state": {
    "shape": "{ roomsLive, allowancePct, unitPricePerSqFt, rooms: [ { name, shape, lengthFt, widthFt, baseFt, heightFt, diameterFt, overallLengthFt, overallWidthFt, notchLengthFt, notchWidthFt } ] }",
    "rooms": "An array of up to eight rooms. Only the first roomsLive of them are read. A room carries only the dimensions its own shape needs; the rest are ignored whatever is in them, because the page puts those fields away.",
    "roomsLive_blank": "With roomsLive blank or unreadable, the takeoff is as long as the rooms the state carries, up to eight. That is how one line of the workbook sold beside this page arrives at the kit's own page comparison.",
    "every_field_is_a_string_or_a_number": "Each field is read through the same reader: a blank, a whitespace-only value and anything that is not a finite number are one thing, which is nothing typed. The reader is looser than that on one point, and it is written down here because an agent reproducing the engine would otherwise differ: a dollar sign, commas and all whitespace are stripped and what is left is read with parseFloat, so \"18.5 ft\" reads as 18.5 and \"12abc\" as 12. Nothing on the page can produce such a value - every numeric control is type=number - and no figure is invented by it: a value with no leading number at all is nothing typed.",
    "reading_at_a_limit": "min, max and step on a number control do not stop a keyboard, so every numeric field is read INSIDE the range its own box offers and at that box's own step: a figure past either end is read at the nearer end, and a dimension is rounded to one decimal of a foot. The four ranges are roomsLive 1 to 8, allowancePct 0 to 50, unitPricePerSqFt 0.00 to 100.00 and every dimension 0.1 to 200.0 feet. A dimension at or below zero is not a reading at a limit at all: it is no measurement, and the room that wants it is incomplete. The reading is reported rather than silent - apiOutputs returns the figure that was READ, the page's labels say read rather than typed, and the glance prints one sentence for each reading, naming the figure typed and the figure read. The workbook sold beside the page reads the same way, in its own MIN and MAX."
  },
  "inputs": [
    {
      "name": "roomsLive",
      "label": "How many rooms are on this takeoff",
      "type": "choice",
      "control": "roomsLive",
      "choices": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8"
      ],
      "offered": {
        "min": 1,
        "max": 8,
        "step": 1
      },
      "blank_means": "the takeoff is as long as the rooms the state carries, up to eight",
      "note": "A select, so the range here is the range the control offers and nothing outside it is reachable from the page. A figure outside it in a state handed to the engine directly is read at the nearer end of the range."
    },
    {
      "name": "allowancePct",
      "label": "Your waste allowance, percent",
      "type": "number",
      "control": "allowancePct",
      "offered": {
        "min": 0,
        "max": 50,
        "step": 0.5
      },
      "blank_means": "no allowance typed, which is read as nothing added rather than as a figure of the engine's own",
      "note": "The reader's own allowance. Zero is a legitimate entry and is not treated as a missing one: the quantity to order then equals the footing and the page says so in the sentence it prints. A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "unitPricePerSqFt",
      "label": "Your unit price, dollars a square foot",
      "type": "number",
      "control": "unitPricePerSqFt",
      "offered": {
        "min": 0,
        "max": 100,
        "step": 0.01
      },
      "blank_means": "no unit price typed, which leaves the areas and the quantity to order valid and withholds only the money line",
      "note": "Read off the quote or the box the reader holds. A blank price and a price typed as zero are different entries and both leave moneyComputed false; neither is an error, and no cost of 0.00 is printed as though it were a cost. A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "name",
      "label": "Your own name for this room",
      "where": "each room",
      "type": "text",
      "control": "roomName",
      "offered": {
        "min": 0,
        "max": 24,
        "step": 1
      },
      "blank_means": "the row is named by the card it came off, printed as Room 1 through Room 8",
      "note": "Up to twenty-four characters. Whitespace-only is the same as blank. Runs of whitespace inside a name are collapsed to one space. A longer name is CUT at twenty-four characters, after that collapsing and after the ends are trimmed, so a cut that falls on a space leaves a trailing space in the row label; the page's own box carries maxlength=24 and cannot produce one, and the name is the reader's own word either way, so nothing computed and nothing asserted turns on it."
    },
    {
      "name": "shape",
      "label": "The shape you measured",
      "where": "each room",
      "type": "choice",
      "control": "roomShape",
      "choices": [
        "rectangle",
        "triangle",
        "circle",
        "L"
      ],
      "blank_means": "the option the control is showing, which is rectangle",
      "note": "The four shapes this engine tells apart, and there is no fifth anywhere on the page or in the file sold beside it. A value this engine does not recognise is read as the option the control is showing, because the control always holds one of the four. The reader is looser than the four names, and it is written down here because an agent reproducing the engine would otherwise differ: the value is trimmed and lowercased, then anything beginning tri is a triangle, anything beginning cir is a circle, anything whose first character is l is an L-shape, and everything else - including a blank - is a rectangle. So Triangular reads as a triangle and Lounge reads as an L-shape. Nothing on the page can produce such a value: its select carries only the four names above."
    },
    {
      "name": "lengthFt",
      "label": "Length, feet",
      "where": "each rectangle",
      "type": "number",
      "control": "roomLen",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "widthFt",
      "label": "Width, feet",
      "where": "each rectangle",
      "type": "number",
      "control": "roomWid",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "baseFt",
      "label": "Base, feet",
      "where": "each triangle",
      "type": "number",
      "control": "roomBase",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "heightFt",
      "label": "Height, feet",
      "where": "each triangle",
      "type": "number",
      "control": "roomHeight",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "Square off the base to the far corner: it is the perpendicular height and not the length of a side. A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "diameterFt",
      "label": "Diameter, feet",
      "where": "each circle",
      "type": "number",
      "control": "roomDia",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "A diameter, straight across, never a radius. A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "overallLengthFt",
      "label": "Overall length, feet",
      "where": "each L-shape",
      "type": "number",
      "control": "roomOL",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "The long side of the rectangle the L sits inside. It has to be strictly greater than notchLengthFt or the room cannot exist. A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "overallWidthFt",
      "label": "Overall width, feet",
      "where": "each L-shape",
      "type": "number",
      "control": "roomOW",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "The other side of that same enclosing rectangle. It has to be strictly greater than notchWidthFt or the room cannot exist. A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "notchLengthFt",
      "label": "Notch length, feet",
      "where": "each L-shape",
      "type": "number",
      "control": "roomNL",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "How far the missing corner runs along the length. A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    },
    {
      "name": "notchWidthFt",
      "label": "Notch width, feet",
      "where": "each L-shape",
      "type": "number",
      "control": "roomNW",
      "offered": {
        "min": 0.1,
        "max": 200,
        "step": 0.1
      },
      "blank_means": "no measurement, and the room is then incomplete",
      "note": "How far that corner runs across the width. A figure typed outside this range is read at the nearer end of it, which min and max on a control cannot prevent: see state.reading_at_a_limit, and the page prints the figure it read under a label that says so."
    }
  ],
  "rounding": {
    "function": "rN(v, dp) = sign(v) * Math.round(Math.abs(v) * 10^dp) / 10^dp, on the double, with no epsilon and no decimal library.",
    "at_the_half": "Half away from zero in BOTH directions, because the absolute value is rounded and the sign is put back afterwards. At two decimals 0.125 comes to 0.13 and -0.125 comes to -0.13, not -0.12, which is what bare Math.round would give on the negative side. At one decimal 0.25 comes to 0.3 and -0.25 to -0.3. The negative half is not reachable from this page's own controls - every dimension, the allowance and the price are offered at zero or above, and an area built out of them is never negative - but the rule is stated at the cent because the engine is published and may be handed a state the page could not produce, and because the negative half-cent is the one place a rounding rule is usually left unsaid.",
    "what_is_rounded": "A dimension is read at one decimal of a foot, which is the step the controls offer. Each room's area is rounded to one decimal of a square foot where it is computed. The job total is the sum of those ROUNDED room areas, so the rows foot to the total a reader adds up by hand: it is not the sum of unrounded areas rounded afterwards, and on a crowded takeoff the two can differ by a tenth. The allowance in square feet is the rounded job total times the typed percent divided by one hundred, rounded to one decimal. The quantity to order is the rounded total plus the rounded allowance, which is exact at one decimal. The material cost is the rounded quantity to order times the typed unit price, rounded to the cent: it is not the unrounded running area times the price, because the quantity to order is the figure a buyer actually buys.",
    "why_it_is_said_here": "An assistant that re-does this arithmetic the other way round - summing unrounded areas, or pricing an unrounded running total - will differ from the page by a tenth of a square foot or by a cent on a crowded takeoff. Both readings are defensible; this one is the page's, the workbook's and this file's, and it is written down so the difference is a known one rather than a surprise."
  },
  "formulas": {
    "rectangle": "lengthFt x widthFt, rounded to 1 decimal.",
    "triangle": "baseFt x heightFt / 2, rounded to 1 decimal.",
    "circle": "3.141593 x diameterFt / 2 x diameterFt / 2, rounded to 1 decimal. Pi is taken to six decimals, which is the figure the page's working prints, so the printed expression and the engine are the same arithmetic.",
    "L": "overallLengthFt x overallWidthFt - notchLengthFt x notchWidthFt, rounded to 1 decimal. The L-shape is decomposed into its enclosing rectangle less the notch cut out of it, never approximated by one rectangle.",
    "totalAreaSqFt": "the sum of the rounded areas of the rooms that are complete, rounded to 1 decimal. Zero while the takeoff is incomplete.",
    "allowanceAreaSqFt": "totalAreaSqFt x allowancePct / 100, rounded to 1 decimal. Zero while the takeoff is incomplete.",
    "orderAreaSqFt": "totalAreaSqFt + allowanceAreaSqFt, rounded to 1 decimal. Zero while the takeoff is incomplete.",
    "materialCost": "orderAreaSqFt x unitPricePerSqFt, rounded to the cent. Zero while the takeoff is incomplete or while no unit price above zero is typed, and in that second case the money rows name the entry rather than printing a cost of nothing: with the price box left empty they print 'none typed', and with a zero typed the unit price row prints the figure it read, '$0.00 a square foot', in the same money form as any other price it read, while the cost row prints 'none at a zero price'. A blank price and a price typed as zero are different entries and the rows say which (2026-10-24).",
    "areaRectangles, areaTriangles, areaCircles, areaLShapes": "the rounded areas of the complete rooms of that one shape, added and rounded to 1 decimal. Zero while the takeoff is incomplete, like the four figures above: a breakdown that foots to a withheld total waits with it. The four add up to totalAreaSqFt exactly in every state, because each room's area is already rounded before it is added anywhere - and because all five are zero together while the takeoff waits.",
    "roomNAreaSqFt": "the Nth room card's own rounded area if that room is complete, and zero otherwise. This one is reported even while the takeoff as a whole is incomplete, because a room somebody measured has an area whatever the room beside it is missing; the job total, the quantity and the cost are the figures that wait."
  },
  "completeness": {
    "a_room_is_complete": "when it carries every dimension its own shape needs, above zero, and - for an L-shape - when the notch is strictly smaller than the enclosing rectangle in both directions.",
    "the_takeoff_is_incomplete": "while any live room is missing a dimension its own shape needs, or while any live L-shape's notch is not strictly smaller than its rectangle in both directions.",
    "what_that_withholds": "Eight figures: the job total, the allowance applied, the quantity to order, the material cost, and the four shape subtotals areaRectangles, areaTriangles, areaCircles and areaLShapes. All eight return zero. On the page the marker is wider than that list, and it is written down here so an agent and a reader are told the same thing: all seven rows of the glance and all six footed rows of the table print the marker, including the allowance and the unit price the reader did type and which apiOutputs still returns. The sentence saying which room is waiting prints in the glance above the figures rather than below them.",
    "what_it_does_not_withhold": "Each complete room's own area, which roomNAreaSqFt reports whatever the room beside it is missing, and the sentence for each figure read at the end of its own box. The unit price is not part of completeness either: a blank or zero price leaves the areas and the quantity to order valid and withholds only the money."
  },
  "states": [
    {
      "name": "a complete takeoff, priced",
      "when": "every live room carries the dimensions its shape needs, no L-shape is impossible, and a unit price above zero is typed",
      "returns": "incomplete false, moneyComputed true, and every figure",
      "note": "A worked example of four rooms, one of each shape, is published below as worked_example. It is NOT the state the page ships in: the page ships with every box empty."
    },
    {
      "name": "a complete takeoff with no price",
      "when": "as above, with the unit price blank or typed as zero",
      "returns": "incomplete false, moneyComputed false, materialCost 0",
      "note": "The areas and the quantity to order are valid and print. The money line says that no unit price is typed, or - where a zero was typed - that a zero was typed. Neither prints a cost of 0.00 as though it were a cost."
    },
    {
      "name": "a room missing a dimension",
      "when": "any live room lacks a dimension its own shape needs",
      "returns": "incomplete true, impossibleRooms 0, the four footed figures 0",
      "note": "What a stranger who types one room and nothing else is in. No headline figure prints."
    },
    {
      "name": "an impossible L-shape",
      "when": "a live L-shape's notch is at least as long as the enclosing rectangle along the length, or at least as wide across the width",
      "returns": "incomplete true, impossibleRooms at least 1, the four footed figures 0",
      "note": "Reported as a room that cannot exist, naming the notch and the rectangle it was typed inside. Never printed as a negative area."
    },
    {
      "name": "an allowance typed as zero",
      "when": "allowancePct is 0 and the takeoff is complete",
      "returns": "allowanceAreaSqFt 0 and orderAreaSqFt equal to totalAreaSqFt",
      "note": "Zero is a figure the reader may type, not a missing entry, and the page says in words that nothing was added."
    },
    {
      "name": "the state the page ships in",
      "when": "nothing has been typed: four named cards, one of each shape, every measurement box empty and the allowance and price boxes empty with them",
      "returns": "incomplete true, impossibleRooms 0, roomsFooted 0, every footed figure 0",
      "note": "The page answers nothing until the reader types. A visitor who fills the first room and nothing else is still in an incomplete takeoff and is told so in the glance, which is the pass S11(b) of the review protocol sets: a confident material cost off a half-entered takeoff has told somebody to order the wrong quantity."
    },
    {
      "name": "a figure typed outside the range its own box offers",
      "when": "a dimension, the allowance or the unit price is typed past either end of the range its own control offers, which a keyboard can do and min/max cannot stop",
      "returns": "the figure read at the nearer end of that range, in apiOutputs and on the page",
      "note": "Reported, not silent: the page's labels say what it read, and the glance prints one sentence for each reading naming the figure typed and the figure read. See state.reading_at_a_limit."
    }
  ],
  "outputs": [
    {
      "name": "incomplete",
      "type": "boolean",
      "of": "the state above"
    },
    {
      "name": "impossibleRooms",
      "type": "count",
      "of": "live rooms whose notch cannot be cut out of their own rectangle; never negative"
    },
    {
      "name": "roomsLive",
      "type": "count",
      "of": "room cards read, 1 to 8"
    },
    {
      "name": "roomsFooted",
      "type": "count",
      "of": "live rooms that are complete and so carry an area; never negative"
    },
    {
      "name": "shapesUsed",
      "type": "count",
      "of": "distinct shapes among the complete rooms, 0 to 4"
    },
    {
      "name": "totalAreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the rooms footed"
    },
    {
      "name": "allowancePct",
      "type": "number",
      "decimals": 1,
      "of": "percent, as the engine read it inside the 0 to 50 the control offers; 0 where no allowance was typed, which the page names rather than printing as a figure"
    },
    {
      "name": "allowanceAreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet the allowance adds"
    },
    {
      "name": "orderAreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet to order"
    },
    {
      "name": "moneyComputed",
      "type": "boolean",
      "of": "whether a unit price above zero was typed"
    },
    {
      "name": "unitPricePerSqFt",
      "type": "number",
      "decimals": 2,
      "of": "dollars a square foot, as the engine read it inside the 0.00 to 100.00 the control offers"
    },
    {
      "name": "materialCost",
      "type": "number",
      "decimals": 2,
      "of": "dollars, the quantity to order at that price"
    },
    {
      "name": "areaRectangles",
      "type": "number",
      "decimals": 1,
      "of": "square feet in complete rectangles"
    },
    {
      "name": "areaTriangles",
      "type": "number",
      "decimals": 1,
      "of": "square feet in complete triangles"
    },
    {
      "name": "areaCircles",
      "type": "number",
      "decimals": 1,
      "of": "square feet in complete circles"
    },
    {
      "name": "areaLShapes",
      "type": "number",
      "decimals": 1,
      "of": "square feet in complete L-shapes"
    },
    {
      "name": "room1AreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the first card's own room"
    },
    {
      "name": "room2AreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the second card's own room"
    },
    {
      "name": "room3AreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the third card's own room"
    },
    {
      "name": "room4AreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the fourth card's own room"
    },
    {
      "name": "room5AreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the fifth card's own room"
    },
    {
      "name": "room6AreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the sixth card's own room"
    },
    {
      "name": "room7AreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the seventh card's own room"
    },
    {
      "name": "room8AreaSqFt",
      "type": "number",
      "decimals": 1,
      "of": "square feet, the eighth card's own room"
    }
  ],
  "worked_example": {
    "why": "a worked example of four rooms, one of each shape - published here because an agent needs one state worked end to end. The page itself ships with every box empty and this example typed into none of them.",
    "state": {
      "roomsLive": 4,
      "allowancePct": 10,
      "unitPricePerSqFt": 3.49,
      "rooms": [
        {
          "name": "Living room",
          "shape": "rectangle",
          "lengthFt": 18.5,
          "widthFt": 12
        },
        {
          "name": "Bay window alcove",
          "shape": "triangle",
          "baseFt": 6,
          "heightFt": 3.5
        },
        {
          "name": "Round bed",
          "shape": "circle",
          "diameterFt": 9
        },
        {
          "name": "Kitchen and hall",
          "shape": "L",
          "overallLengthFt": 22,
          "overallWidthFt": 14,
          "notchLengthFt": 7.5,
          "notchWidthFt": 5
        }
      ]
    },
    "outputs": {
      "incomplete": false,
      "impossibleRooms": 0,
      "roomsLive": 4,
      "roomsFooted": 4,
      "shapesUsed": 4,
      "totalAreaSqFt": 566.6,
      "allowancePct": 10,
      "allowanceAreaSqFt": 56.7,
      "orderAreaSqFt": 623.3,
      "moneyComputed": true,
      "unitPricePerSqFt": 3.49,
      "materialCost": 2175.32,
      "areaRectangles": 222,
      "areaTriangles": 10.5,
      "areaCircles": 63.6,
      "areaLShapes": 270.5,
      "room1AreaSqFt": 222,
      "room2AreaSqFt": 10.5,
      "room3AreaSqFt": 63.6,
      "room4AreaSqFt": 270.5,
      "room5AreaSqFt": 0,
      "room6AreaSqFt": 0,
      "room7AreaSqFt": 0,
      "room8AreaSqFt": 0
    },
    "read_it_back": "18.5 x 12.0 is 222.0 square feet. 6.0 x 3.5 / 2 is 10.5. 3.141593 x 9.0 / 2 x 9.0 / 2 is 63.6. 22.0 x 14.0 - 7.5 x 5.0 is 270.5, the enclosing rectangle less its notch. Those four rounded areas added are 566.6. 566.6 x 10.0 / 100 is 56.7, so the quantity to order is 566.6 + 56.7 = 623.3 square feet, and 623.3 x 3.49 is 2175.32 dollars."
  },
  "second_worked_example": {
    "why": "the two states the engine must not smooth over, in one state each",
    "impossible_L": {
      "state": {
        "roomsLive": 1,
        "allowancePct": 10,
        "unitPricePerSqFt": 3.49,
        "rooms": [
          {
            "name": "Kitchen and hall",
            "shape": "L",
            "overallLengthFt": 10,
            "overallWidthFt": 8,
            "notchLengthFt": 12,
            "notchWidthFt": 9
          }
        ]
      },
      "outputs": {
        "incomplete": true,
        "impossibleRooms": 1,
        "roomsFooted": 0,
        "totalAreaSqFt": 0,
        "orderAreaSqFt": 0,
        "materialCost": 0
      },
      "note": "A notch 12.0 ft long inside a rectangle 10.0 ft long would give an area of -8.0 square feet if it were multiplied out. It is reported as a room that cannot exist instead, and the page names the notch and the rectangle it was typed inside."
    },
    "zero_price": {
      "state": {
        "roomsLive": 2,
        "allowancePct": 10,
        "unitPricePerSqFt": 0,
        "rooms": [
          {
            "name": "Living room",
            "shape": "rectangle",
            "lengthFt": 18.5,
            "widthFt": 12
          },
          {
            "name": "Round bed",
            "shape": "circle",
            "diameterFt": 9
          }
        ]
      },
      "outputs": {
        "incomplete": false,
        "moneyComputed": false,
        "totalAreaSqFt": 285.6,
        "allowanceAreaSqFt": 28.6,
        "orderAreaSqFt": 314.2,
        "unitPricePerSqFt": 0,
        "materialCost": 0
      },
      "note": "The areas and the quantity to order stand. materialCost returns 0 and the page prints that a zero was typed rather than a cost of 0.00."
    }
  },
  "limits": [
    "It is arithmetic on the figures the reader typed, read to the step and inside the range each box offers, and nothing else. It measures and never specifies.",
    "It holds no allowance, price or coverage of its own and calls no figure usual, typical, standard or recommended.",
    "It names no product, brand, grade, thickness, pattern, adhesive, underlay or supplier, and it says nothing about whether a material suits a room, a subfloor, a use or a climate.",
    "It says nothing about fitting, preparation or method, nothing about what a job should cost, and nothing about whether a quote is fair.",
    "It is not a quote and it binds nobody. A supplier re-quotes from its own figure.",
    "Nothing typed on the page is stored or sent anywhere. This file is the arithmetic, not a record of anyone's takeoff."
  ]
}
