Resources Numerical accuracy

Calculations

Every calculation under our calculation policies: what it works out, its formula and the precision it runs at. Open one to see its code as it is in the released app.

  • 6,917 calculations in 1,248 source files
  • 143 exact
  • 6,286 in 64-bit
  • 335 with a 32-bit step
  • Last reviewed

Calculations

  • Length of a linear mark

    The counted, deducted and gross length of a run in feet, along the slope where a segment is a rake or a hip.

    segment ft = segment length × ftPerUnit; sloped = segment ft × slope factor; length = Σ counted sloped segments; gross = length + deducted

    Takeoff quantities from marks model.js
    • TakeoffCraft
    64-bit
  • Area and perimeter of an area mark

    The net area of an outline minus its cut-outs in square feet, on the slope when the mark or its item has a pitch, and its perimeter in feet.

    area = net × ftPerUnit × ftPerUnit × √(1 + (pitch ÷ 12)²); perimeter = perimeter × ftPerUnit

    Takeoff quantities from marks model.js
    • TakeoffCraft
    64-bit
  • Totals per item and per sheet

    Each item's total length, area, perimeter and count, and the same per sheet, with back-outs taken out and typical groups counted as many times as they repeat.

    item total = Σ marks (measure × repeat); area mark = max(0, area − back-out × slope factor)

    Takeoff quantities from marks model.js
    • TakeoffCraft
    64-bit
  • Back-out area taken from an area mark

    How many square feet the back-out marks on the same sheet cover of one area mark.

    cut = (Σ overlap areas in sheet units) × ftPerUnit × ftPerUnit

    Takeoff quantities from marks model.js
    • TakeoffCraft
    64-bit
  • Totals in the item's unit

    An item's length, area, perimeter, height and count in the unit the item reports in, as the values assembly formulas use.

    L = feet × 0.3048 for a metric item; A = square feet × the unit's factor; wall area = length × height

    Takeoff quantities from marks model.js
    • TakeoffCraft
    64-bit
  • Quantity of a second condition

    The quantity of an item's second kind of mark in that condition's own unit.

    Takeoff quantities from marks model.js
    • TakeoffCraft
    64-bit
  • One priced row

    A row's quantity with waste and its material, labor and total amounts in cents.

    qtyW = qty × (1 + waste ÷ 10000); amount = round(qtyW × rate ÷ 100) cents; total = material + labor

    Priced estimate model.js
    • TakeoffCraft
    64-bit
  • Crew hours and labor

    The crew hours, worker hours, crew days and labor amount for a quantity, and the labor rate per unit it comes to.

    hours = qtyW ÷ production; worker hours = hours × size; days = hours ÷ 8; labor = round(worker hours × wage ÷ 100) cents; rate = round(size × wage ÷ production)

    Priced estimate model.js
    • TakeoffCraft
    64-bit
  • Estimate rows and totals

    A row for every item, second condition and assembly part, and the material, labor, hours and grand totals.

    material total = Σ row material; labor total = Σ row labor; total = material + labor; days = hours ÷ 8

    Priced estimate model.js
    • TakeoffCraft
    64-bit
  • Estimate of each bid area

    A separate estimate for each bid area, from that area's own marks.

    Priced estimate model.js
    • TakeoffCraft
    64-bit
  • Alternates

    What taking each alternate adds to or takes from the base bid.

    amount = + Σ row totals for an add; − Σ row totals for a deduct

    Priced estimate model.js
    • TakeoffCraft
    64-bit
  • Rounding of exported quantities and amounts

    How a quantity, an amount in cents and a rate become the numbers written to a file.

    quantity → 4 decimals; dollars = cents ÷ 100 → 2 decimals; rate = rate ÷ 10000

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Estimate as CSV

    The estimate's rows, totals, alternates and bid summary as values in a CSV file.

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Per-sheet quantities as CSV

    Each item's quantity on each sheet as a CSV row.

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Material list

    Every part and priced item added up by name and unit across the takeoff.

    per name and unit: qty = Σ row qty; qty with waste = Σ row qtyW; material = Σ row cents

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Estimate by division

    Material, labor and total per division, from the first two digits of each item's CSI number.

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Spot elevation point file

    The count marks of one sheet that carry an elevation, as northing, easting and elevation in feet.

    northing = y × ftPerUnit; easting = x × ftPerUnit; elevation = z

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Estimate worksheet row

    One priced row of the Estimate sheet: values, live formulas and the cached results.

    F = D × (1 + E); I = ROUND(F × G, 2); J = ROUND(F × H, 2); K = I + J

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Per-mark quantities on the Marks sheet

    Each mark's own length or area in its unit, with its segments, cut-outs and perimeter as text.

    length = feet × 0.3048 for a metric unit; area = square feet × the unit's factor

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Markup rows under the estimate total

    Labor burden, tax, overhead, profit and bond as live rows: base, percent and amount.

    amount = ROUND(base × percent, 2); percent = basis points ÷ 10000

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • By bid area worksheet

    Each bid area's rows, a subtotal per area and the sum of the subtotals.

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Alternates worksheet

    The base bid, each alternate's rows and amount, and the base bid with every add taken.

    base with adds = base total + Σ add amounts

    Estimate and quantity exports (CSV and XLSX) export.js
    • TakeoffCraft
    64-bit
  • Our cost of each item

    The sum of an item's estimate rows: the item, its second conditions and its assembly parts.

    cost = Σ row totals

    Bid packages and leveling level.js
    • TakeoffCraft
    64-bit
  • Package scope and cost

    The items of each CSI division with their quantity, unit and cost, and the package's cost.

    package cost = Σ item costs

    Bid packages and leveling level.js
    • TakeoffCraft
    64-bit
  • Leveled bids and the low bid

    Each bid with plugs for what it leaves out, its difference from our cost, and which bid is low.

    leveled = bid + Σ plugs; difference = leveled − our cost; low = smallest leveled

    Bid packages and leveling level.js
    • TakeoffCraft
    64-bit
  • Package scope file

    The scope sent to a subcontractor: item, CSI number, quantity, unit and sheets, without prices.

    quantity = round(q × 10000) ÷ 10000

    Bid packages and leveling level.js
    • TakeoffCraft
    64-bit
  • Base bid with the chosen bids

    The estimate with each awarded package priced at its chosen bid instead of our own rates.

    total = material + labor + Σ chosen bids

    Bid packages and leveling level.js
    • TakeoffCraft
    64-bit
  • Paper length of a notation in inches

    Reads a fraction, a mixed number or a decimal as inches.

    1-1/2 → 1 + 1 ÷ 2; 1/4 → 1 ÷ 4

    Sheet scale read from the sheet's text scaletext.js
    • TakeoffCraft
    64-bit
  • Ratio of a notation and its listed scale

    Every scale notation in the text, each matched to a listed scale.

    ratio = (feet × 12 + inches) ÷ paper inches, rounded to 3 decimals

    Sheet scale read from the sheet's text scaletext.js
    • TakeoffCraft
    64-bit
  • Which scale a sheet gets

    The most frequent scale on the sheet, and the other scales found.

    Sheet scale read from the sheet's text scaletext.js
    • TakeoffCraft
    Exact
  • Stock figure from text

    Reads a stock cell such as 1,200 or Out of stock as a number, or as in stock or not.

    Supplier stock and lead-time check lib-supply/supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Lead time in days

    Reads a lead time such as 2-3 weeks or 5 business days as a number of days.

    weeks × 7; months × 30; business days → ⌈n × 7 ÷ 5⌉; result rounded to 0.1 day

    Supplier stock and lead-time check lib-supply/supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Price from text

    Reads a price cell as a whole number of 1/10000 dollar.

    price = round(n × 10000)

    Supplier stock and lead-time check lib-supply/supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • A need in the supplier's unit

    The needed quantity in the unit the supplier's row uses.

    tonnes = kilograms ÷ 1000

    Supplier stock and lead-time check lib-supply/supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Short, late or in stock

    For each need: the matching supplier row, the shortfall and the status.

    short = max(0, need − stock); late: no stock figure and lead > limit

    Supplier stock and lead-time check lib-supply/supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Values in the reported problems

    The required and found values of a shortage or a long lead time in the problems list.

    Supplier stock and lead-time check lib-supply/supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Stock figure from text

    Reads a stock cell such as 1,200 or Out of stock as a number, or as in stock or not.

    Supplier stock and lead-time check supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Lead time in days

    Reads a lead time such as 2-3 weeks or 5 business days as a number of days.

    weeks × 7; months × 30; business days → ⌈n × 7 ÷ 5⌉; result rounded to 0.1 day

    Supplier stock and lead-time check supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Price from text

    Reads a price cell as a whole number of 1/10000 dollar, the unit the takeoff's rates use.

    price = round(n × 10000)

    Supplier stock and lead-time check supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Short, late or in stock

    For each estimate row with a quantity: the matching supplier row, the shortfall and the status.

    short = max(0, need − stock); late: no stock figure and lead > limit

    Supplier stock and lead-time check supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Values in the reported problems

    The required and found values of a shortage or a long lead time in the problems list.

    Supplier stock and lead-time check supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Supplier prices into the price library

    Sets a library entry's material rate to the matching supplier row's price.

    Supplier stock and lead-time check supply.js
    • TakeoffCraft
    • DetailCraft
    64-bit
  • Markups carried onto a revised sheet

    The points and rectangle of each markup on the new sheet, scaled when the new page has another size.

    k = min(w₂ ÷ w₁, h₂ ÷ h₁); p′ = origin₂ + (p − origin₁) × k

    Carried, stamped and pasted markup geometry slip.js
    • MarkupCraft
    64-bit
  • Superseded stamp position

    The rectangle of the Superseded stamp across the top middle of the old sheet.

    w = min(0.4 × page width as read, 432); h = max(36, 0.18 × w); rect = center ± half size

    Carried, stamped and pasted markup geometry slip.js
    • MarkupCraft
    64-bit
  • Picture size fitted to a box

    A picture's width and height scaled to fit a maximum size, keeping its proportions.

    k = min(maxW ÷ w, maxH ÷ h, 1e9); size = (w × k, h × k)

    Carried, stamped and pasted markup geometry imagestamp.js
    • MarkupCraft
    64-bit
  • Rectangle of a placed picture

    The rectangle of a picture of a given size centered on a point, turned with the page.

    rect = (cx − w ÷ 2, cy − h ÷ 2, cx + w ÷ 2, cy + h ÷ 2), with w and h swapped on a page turned 90° or 270°

    Carried, stamped and pasted markup geometry imagestamp.js
    • MarkupCraft
    64-bit
  • Box of copied page content

    The box around the selected objects that becomes the copied page's size.

    box = union of the objects' boxes, grown by max(line width ÷ 2 + 0.5) on every side

    Carried, stamped and pasted markup geometry content-clip.js
    • MarkupCraft
    64-bit
  • Transform of pasted content

    The matrix that moves copied content to where it is pasted and turns it to read the same way on the target page.

    T = translate(−cx, −cy) · R(turn) · translate(target); turn = (target rotation − source rotation) mod 360

    Carried, stamped and pasted markup geometry content-clip.js
    • MarkupCraft
    64-bit
  • Camera point and view scale

    The camera's X and Y over the markup and the size of the view, in meters.

    k = 0.0254 ÷ 72; cx = (x₀ + x₁) ÷ 2 × k; scale = 1.4 × max(Δx, Δy, 36) × k

    BCF viewpoint of a markup bcf.js
    • MarkupCraft
    64-bit
  • Paper sizes in points

    The width and height of each paper size in PDF points.

    inch = 72 points; mm = 72 ÷ 25.4 points; A4 = 210 mm × 297 mm

    Blank pages: paper sizes and grid blank.js
    • MarkupCraft
    64-bit

A calculation is added only after its source was read. Each statement can be checked in the code shown on its policy's page; the app repositories are public. When a release changes a calculation, its page says so until it has been read again.