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

  • Reading a typed slope

    Turns '1/4"/ft', '2%', '1:50' or '0.02' into rise per run.

    inch per foot ÷ 12; percent ÷ 100; 1 ÷ n

    Pipe and duct runs: layout, lengths and sizing mep-ui.js
    • BimCraft
    64-bit
  • Schedule totals

    The total length, piece count and duct surface shown under the pipe and duct schedules.

    ft² = mm² ÷ 92903.04

    Pipe and duct runs: layout, lengths and sizing mep-ui.js
    • BimCraft
    64-bit
  • Runs handed to the takeoff

    The plan length, pitch and surface height of pipe and duct pieces passed to TakeoffCraft.

    pitch = atan(slope) × 180 ÷ π; heightFt = perimeter ÷ 304.8

    Pipe and duct runs: layout, lengths and sizing mep-ui.js
    • BimCraft
    64-bit
  • Weighted sound reduction index

    Rw and the adaptation terms C and Ctr from sixteen third-octave sound reduction values.

    highest shift s with Σ max(0, ref + s − R) ≤ 32; Rw = ref₅₀₀ + s; C = round(X_A − Rw)

    Sound insulation ratings and the mass law insul.js
    • BimCraft
    64-bit
  • Spectrum adaptation sum

    The A-weighted level difference for a reference spectrum.

    X_A = −10 lg Σ 10^((Lⱼ − Rⱼ) ÷ 10)

    Sound insulation ratings and the mass law insul.js
    • BimCraft
    64-bit
  • Weighted impact sound level

    Ln,w and the adaptation term CI from sixteen third-octave impact levels.

    lowest shift s with Σ max(0, L − (ref + s)) ≤ 32; Ln,w = ref₅₀₀ + s; CI = round(10 lg Σ 10^(L ÷ 10) − 15 − Ln,w)

    Sound insulation ratings and the mass law insul.js
    • BimCraft
    64-bit
  • Mass law

    The sound reduction of a single-leaf wall from its mass per area and the frequency.

    R = 20 lg(m × f) − 47

    Sound insulation ratings and the mass law insul.js
    • BimCraft
    64-bit
  • Critical frequency

    The frequency at which a panel's bending wave matches the speed of sound in air.

    fc = c² ÷ (2π h) × √(12 ρ (1 − ν²) ÷ E), c = 343

    Sound insulation ratings and the mass law insul.js
    • BimCraft
    64-bit
  • Mass-law reduction by octave band

    The mass-law value in the octave bands from 125 to 4000 Hz, up to half the critical frequency.

    m = ρ × h; R(f) for f ≤ fc ÷ 2

    Sound insulation ratings and the mass law insul.js
    • BimCraft
    64-bit
  • Replacement years, cost and present value

    Every replacement in the study period with its cost, and the totals by year and by part.

    t = t₀ + k × life; cost = q × c × (1 + i)^t; PV = cost ÷ (1 + r)^t

    Replacement schedule and cost over the building's life lifecycle.js
    • BimCraft
    64-bit
  • Replacement schedule as CSV

    The schedule and the year-by-year costs written as text.

    money = round(x × 100) ÷ 100; carbon = round(x × 10) ÷ 10

    Replacement schedule and cost over the building's life lifecycle.js
    • BimCraft
    64-bit
  • Quantities of the building's parts

    Window area, door counts, exterior wall area, room finishes, roof area and stairs taken from the model.

    wall = Σ perimeter ÷ 1000 × height − openings; window = w ÷ 1000 × h ÷ 1000; quantity = round(q × 100) ÷ 100

    Replacement schedule and cost over the building's life lifecycle-model.js
    • BimCraft
    64-bit
  • Age of an installed item

    Years between an item's install date and today.

    age = (today − installed) ÷ (365.25 days)

    Replacement schedule and cost over the building's life lifecycle-model.js
    • BimCraft
    64-bit
  • Quantities of the building services

    Equipment by class, meters of pipe and duct, and an estimate of the wiring.

    pipe = round(Σ |pᵢ − pᵢ₋₁| ÷ 1000, 2); wiring = round(Σ nearest distances ÷ 1000 × 1.25, 2)

    Replacement schedule and cost over the building's life lifecycle-model.js
    • BimCraft
    64-bit
  • Carbon per unit of each part

    The embodied carbon of one unit of a part, from the model's carbon totals.

    kg per unit = Σ carbon of the part's elements ÷ quantity

    Replacement schedule and cost over the building's life lifecycle-model.js
    • BimCraft
    64-bit
  • Reading WAV samples

    The first channel of a WAV file as numbers between −1 and 1.

    x = sample ÷ 2^(bits − 1)

    Room acoustic measures from an impulse response metrics.js
    • BimCraft
    32-bit in part
  • Decay time from a line fit

    A decay time from the slope of the least-squares line through part of the decay curve.

    slope = (m Σ t d − Σ t Σ d) ÷ (m Σ t² − (Σ t)²); T = 60 ÷ −slope

    Room acoustic measures from an impulse response metrics.js
    • BimCraft
    64-bit
  • Decay curve, clarity, definition and center time

    The energy decay curve and the measures read from it.

    curve = 10 lg(∫ₜ p² ÷ ∫₀ p²); C = 10 lg(early ÷ late); D50 = early ÷ total; Ts = Σ t p² ÷ Σ p²

    Room acoustic measures from an impulse response metrics.js
    • BimCraft
    64-bit
  • Predicted against measured

    The difference between a predicted and a measured value in each band, against the just-noticeable difference.

    within when |predicted − measured| ≤ JND

    Room acoustic measures from an impulse response metrics.js
    • BimCraft
    64-bit
  • Circle of an arc

    The center, radius, angle and length of the arc between two points with a bulge.

    θ = 4 atan(b); h = b c ÷ 2; R = ((c ÷ 2)² + h²) ÷ (2 |h|); length = R |θ|

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Chord of an arc of a given length

    The straight distance between the ends of an arc of a given length and bulge.

    chord = len × sin(θ ÷ 2) ÷ (θ ÷ 2)

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Arc height and bulge

    How far the arc's middle stands off its chord, and the bulge for a typed height.

    height = −b × c ÷ 2; b = −2 h ÷ c

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Arc through three points

    The bulge of the arc from a through p to b.

    d = 2 (a_x (p_y − b_y) + p_x (b_y − a_y) + b_x (a_y − p_y)); bulge = tan(θ ÷ 4)

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Chords of an arc

    The points between an arc's ends when it is drawn or saved as straight pieces.

    n = max(1, ⌈|θ| ÷ step⌉); point = C + R (cos f, sin f)

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Points along and off a wall

    A point at a distance along a wall and an offset to its left, and the reverse, for straight and curved walls.

    curved: p = C + (R − off × sg) (cos φ, sin φ), φ = a₀ + sg × s ÷ R

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Where an opening sits in a curved wall

    The position and angle of a door or window in the wall's own axes, square to the wall at the opening's middle.

    O = at(off + w ÷ 2) − T × w ÷ 2; angle = atan2(T) − chord angle

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Offset of an opening read back

    The distance along a curved wall of an opening, from the matrix that places it.

    offset = s(middle) − w ÷ 2

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Opening body in a curved wall

    The four corners of the body that cuts an opening through a curved wall, with jambs along the radius.

    half = w ÷ R ÷ 2; outer radius = r ÷ cos(half)

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Axis curve saved for a curved wall

    The circle and its two trim points written as the wall's axis.

    circle of radius R about the center in the wall's axes, trimmed from (0, 0) to (chord, 0)

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Profile with arc edges

    The closed outline of a curved wall written with true arcs (IFC4) or chords (IFC2X3).

    arc edge = start, middle of the arc, end

    Curved walls model-arcs.js
    • BimCraft
    64-bit
  • Height of a column

    The height a column is built with: up to its top level plus an offset, else its fixed height.

    h = top elevation − own elevation + offset

    Columns: height and quantities model-columns.js
    • BimCraft
    64-bit
  • Cross-section area and volume

    The quantities written on a column.

    area = π (w ÷ 2)² or w × d; volume = area × h

    Columns: height and quantities model-columns.js
    • BimCraft
    64-bit
  • Sizes saved with a column

    The width, depth, angle and heights kept in the column's property set, which is what is read back.

    Columns: height and quantities model-columns.js
    • BimCraft
    64-bit
  • Columns following a level

    Rebuilds columns whose height no longer matches their levels.

    rebuild when |stored − wanted| > 0.5 mm

    Columns: height and quantities model-columns.js
    • BimCraft
    64-bit
  • Area of an outline

    The signed area of a polygon.

    A = ½ Σ (xᵢ yᵢ₊₁ − yᵢ xᵢ₊₁)

    Drawn floors: outline, openings and quantities model-floors.js
    • BimCraft
    64-bit
  • Perimeter of an outline

    The total length of the outline's edges.

    P = Σ |pᵢ₊₁ − pᵢ|

    Drawn floors: outline, openings and quantities model-floors.js
    • BimCraft
    64-bit
  • Do two edges cross

    A yes or no on whether two segments properly cross.

    cross when o(a, b, c) × o(a, b, d) < 0 and o(c, d, a) × o(c, d, b) < 0

    Drawn floors: outline, openings and quantities model-floors.js
    • BimCraft
    64-bit
  • Is the outline usable

    Refuses an outline with fewer than 3 corners, one that crosses itself, or one with almost no area.

    refuse when |A| < 10 000 mm²

    Drawn floors: outline, openings and quantities model-floors.js
    • BimCraft
    64-bit
  • Is a point inside the outline

    The even-odd test used to check that an opening lies in its floor.

    Drawn floors: outline, openings and quantities model-floors.js
    • BimCraft
    64-bit
  • Saving and reading the outline

    The outline's points written as text in the file's length unit, and read back.

    text = round(x ÷ unit, 3) , round(y ÷ unit, 3)

    Drawn floors: outline, openings and quantities model-floors.js
    • BimCraft
    64-bit
  • Perimeter, area and volume written on a floor

    The slab quantities, gross and net of the openings.

    net area = A − Σ |hole|; volume = area × thickness

    Drawn floors: outline, openings and quantities model-floors.js
    • BimCraft
    64-bit
  • Flights and landings of a ramp

    Where each flight and landing starts and ends along the ramp, and at what height.

    n = max(1, ⌈rise ÷ maxRise − 1e-9⌉); flight run = rise ÷ n × slope; steep when slope < 12 − 1e-9

    Ramps: flights, landings and quantities model-ramps.js
    • BimCraft
    64-bit
  • Rise of a ramp

    The height a ramp climbs: to its top level, else the rise typed.

    rise = top elevation − own elevation

    Ramps: flights, landings and quantities model-ramps.js
    • BimCraft
    64-bit
  • Flight slope, length and volume

    The slope angle, sloped length and volume written on each flight.

    slope = atan(Δz ÷ len); length = √(len² + Δz²); volume written = length × width × t

    Ramps: flights, landings and quantities model-ramps.js
    • BimCraft
    64-bit
  • Values saved with a ramp

    The start point, sizes, slope and the rise and run used, kept in the ramp's property set.

    required slope = atan(1 ÷ slope)

    Ramps: flights, landings and quantities model-ramps.js
    • BimCraft
    64-bit
  • Ramps following a level

    Rebuilds ramps whose rise follows a level that moved.

    rebuild when |rise − rise used| > 0.5 mm

    Ramps: flights, landings and quantities model-ramps.js
    • BimCraft
    64-bit
  • Grid lines by spacing

    The ends of numbered and lettered grid lines from a count, a spacing or list of spacings, an origin and an angle.

    xᵢ = xᵢ₋₁ + spacing; P = origin + R(angle) × (x, y)

    Grid lines model-grids.js
    • BimCraft
    64-bit
  • Where grid lines cross

    The crossing points of every pair of grid lines, for snapping.

    den = r × s; t = (q − p) × s ÷ den; point = p + t r

    Grid lines model-grids.js
    • BimCraft
    64-bit
  • Grid lines an elevation shows

    The lines that run within 30° of a view's direction, and where they sit across the view.

    kept when |e · d| ÷ |e| ≥ 0.866; x = a · right

    Grid lines model-grids.js
    • BimCraft
    64-bit
  • Is the grid rectangular

    A yes or no that decides the grid's type in the file.

    parallel when |d₁ × d₂| < 1e-6; square when |u · v| < 1e-6

    Grid lines model-grids.js
    • BimCraft
    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.