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

  • Vertex data of one geometry

    Returns a geometry's positions and normals for drawing and for measuring.

    IFC geometry handed to the apps ifc/api.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    32-bit in part
  • Placement matrix of each piece

    The matrix that takes a geometry's vertices to model space in meters, Y up.

    M = C × Y-up × scale(u) × placement

    IFC geometry handed to the apps ifc/api.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Shift to the origin

    Finds the translation that brings the model near the origin.

    c = (box min + box max) ÷ 2 of the first element; C = translate(−(Y-up × scale(u) × placement × c))

    IFC geometry handed to the apps ifc/api.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • File units to meters, Z up to Y up

    Scales a placement by the file's length unit and turns its axes.

    M′ = Y-up × scale(u) × M

    IFC geometry handed to the apps ifc/api.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Clear spacing a bar asks for

    The least clear distance between parallel bars for a bar size and aggregate.

    max(25.4, d_b, 4/3 × aggregate) mm; BS bars: max(d_b, aggregate + 5, 20) mm

    Rebar congestion map of a footing congestion.js
    • DetailCraft
    64-bit
  • Free gap at a point

    The length of the free stretch that contains a point, between the bars either side of it.

    gap = right − left; 0 inside a bar

    Rebar congestion map of a footing congestion.js
    • DetailCraft
    64-bit
  • Need and grid size

    Sets what the concrete needs and how fine the map is.

    cell = max(5, given, or max(10, ⌈max(L, B) ÷ 160 ÷ 5⌉ × 5)); columns = round(L ÷ cell)

    Rebar congestion map of a footing congestion.js
    • DetailCraft
    64-bit
  • Opening and ratio per cell, and the worst place

    Fills the map and finds the tightest opening and the number of cells that are too tight.

    opening = min of the gaps in each layer; ratio = need ÷ opening

    Rebar congestion map of a footing congestion.js
    • DetailCraft
    64-bit
  • Share of the open area that is too tight

    The fraction of free cells whose ratio is over 1.

    share = cells with ratio > 1 ÷ cells with opening > 0

    Rebar congestion map of a footing congestion.js
    • DetailCraft
    32-bit in part
  • The congestion problem

    The warning or error listed for a footing whose steel is too tight.

    Rebar congestion map of a footing congestion.js
    • DetailCraft
    32-bit in part
  • Conversion constants and two-decimal rounding

    The pound and inch factors and the helper that writes two decimals.

    lb = kg × 2.20462262185; in = mm ÷ 25.4; f2(v) = round(v × 100) ÷ 100

    KISS file: quantities, sizes and weights kiss.js
    • DetailCraft
    64-bit
  • Weight and plate area fields

    The weight and area written on a line, in metric or imperial units.

    weight = kg, or kg × 2.20462262185 lb; area = m², or m² × 10.7639104167 sq ft

    KISS file: quantities, sizes and weights kiss.js
    • DetailCraft
    64-bit
  • Inches as a fraction to 1/16

    Writes a plate or bolt size in inches and sixteenths.

    n = round(inches × 16); whole = ⌊n ÷ 16⌋; fraction reduced by halving

    KISS file: quantities, sizes and weights kiss.js
    • DetailCraft
    64-bit
  • Size designation

    The type code and size text of a part's profile.

    KISS file: quantities, sizes and weights kiss.js
    • DetailCraft
    64-bit
  • Detail line: quantity, length, weight, area

    One D line of the file for a part mark.

    plate area m² = width × length ÷ 10⁶

    KISS file: quantities, sizes and weights kiss.js
    • DetailCraft
    64-bit
  • Hole counts by size

    The labor lines that count a part's holes by diameter and thickness.

    KISS file: quantities, sizes and weights kiss.js
    • DetailCraft
    64-bit
  • Scale of a pasted picture

    Works out how big one pixel of the copied area is in the model.

    mm per pixel = width in mm ÷ width in pixels

    Reference picture size and position picture.js
    • DetailCraft
    64-bit
  • Picture size in millimeters

    The width and height of the picture in the model.

    w = pixelsₓ × mm per pixel; h = pixels_y × mm per pixel

    Reference picture size and position picture.js
    • DetailCraft
    64-bit
  • Picture corners

    The four corners of the picture's outline.

    corner = middle ± size ÷ 2

    Reference picture size and position picture.js
    • DetailCraft
    64-bit
  • Picture values read from a file

    Checks a picture's numbers when a model is opened.

    Reference picture size and position picture.js
    • DetailCraft
    64-bit
  • Area, mass per meter, width, depth and perimeter

    Fills in the values every member, bill of materials and drawing reads from a profile.

    mass kg/m = published value, else area mm² × 10⁻⁶ × ρ kg/m³

    Steel profiles: area, mass per meter and sizes profiles.js
    • DetailCraft
    64-bit
  • Plate name

    The name of a plate profile from its thickness and width.

    PL<t>x<w>, each to 2 decimals

    Steel profiles: area, mass per meter and sizes profiles.js
    • DetailCraft
    64-bit
  • Thickness a hole goes through

    The material thickness on the face a hole is made in.

    Steel profiles: area, mass per meter and sizes profiles.js
    • DetailCraft
    64-bit
  • Profile summary in the properties panel

    The rows of sizes, area and mass shown for a profile.

    area cm² = area mm² ÷ 100

    Steel profiles: area, mass per meter and sizes profiles.js
    • DetailCraft
    64-bit
  • Custom profile sizes

    Checks the sizes of a profile a person defines.

    Steel profiles: area, mass per meter and sizes profiles.js
    • DetailCraft
    64-bit
  • A part's solid

    Builds the side faces and end caps of one steel part.

    USD export of the steel model usd-detailcraft.js
    • DetailCraft
    64-bit
  • Millimeters to meters

    Converts a world point for the USD file.

    (x, y, z) m = (x, y, z) mm ÷ 1000

    USD export of the steel model usd-detailcraft.js
    • DetailCraft
    64-bit
  • Length and weight attributes

    The length in meters and the weight in kilograms written on each part.

    length m = length mm ÷ 1000

    USD export of the steel model usd-detailcraft.js
    • 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 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
  • Value of a number row

    The number handed to the app when a person changes a number box.

    v = min(max, max(min, typed value))

    Numbers typed into the property grid app-propgrid.js Every app
    64-bit
  • Rounding of a slider value

    Removes binary noise such as 0.30000000000000004 from a slider's value.

    v = round to (decimals of the step + 2) decimals, at most 8

    Numbers typed into the property grid app-propgrid.js Every app
    64-bit
  • Value of a slider row

    The number handed to the app while a slider is dragged or its box is changed.

    v = fix(clamp(value, min, max), step)

    Numbers typed into the property grid app-propgrid.js Every app
    64-bit
  • Integer or float

    Decides how a number is written.

    Numbers sent between people editing together live-client.js Every app
    64-bit
  • Writing a float

    Writes a number as 8 bytes.

    Numbers sent between people editing together live-client.js Every app
    64-bit
  • Writing an integer

    Writes a whole number in the shortest integer form that holds it.

    Numbers sent between people editing together live-client.js Every app
    Exact
  • Reading a float

    Reads a 4-byte or an 8-byte float from a message.

    Numbers sent between people editing together live-client.js Every app
    64-bit
  • Reading a 64-bit integer

    Reads an unsigned or signed 64-bit integer.

    Numbers sent between people editing together live-client.js Every app
    Exact
  • Cost of one call

    The cost of a call from its token counts and the model's prices.

    cost = (in × price in + out × price out) ÷ 1,000,000

    Spending on a person's own AI model ai-byok.js Every app
    64-bit
  • Spending today and this month

    The cost, tokens and number of calls for the current day and month, and the calls in the last hour.

    amount = Σ cost of the calls in the period

    Spending on a person's own AI model ai-byok.js Every app
    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.