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

  • A point back in file coordinates

    The file-unit position of one kept point.

    p = pos + origin

    Point cloud positions and read-in values pointcloud.js
    • CadCraft
    • BimCraft
    32-bit in part
  • Points in a slice

    The points that lie within a thickness of a plane.

    |pos − (at − origin)| ≤ thick ÷ 2

    Point cloud positions and read-in values pointcloud.js
    • CadCraft
    • BimCraft
    32-bit in part
  • Intensities scaled to 0 to 65535

    The intensity of each kept point on a common 16-bit scale.

    out = round((v − lo) ÷ (hi − lo) × 65535)

    Point cloud positions and read-in values pointcloud.js
    • CadCraft
    • BimCraft
    32-bit in part
  • LAS record decoder

    The x, y, z of each LAS point from its stored integers.

    x = Int32 × scale + offset

    Point cloud positions and read-in values pointcloud.js
    • CadCraft
    • BimCraft
    64-bit
  • Size of the cloud

    The extent of the cloud in each axis shown in the summary.

    size = max − min

    Point cloud positions and read-in values pointcloud.js
    • CadCraft
    • BimCraft
    64-bit
  • Round a box edge outward to 32-bit

    A 32-bit number that is never above (down) or never below (up) the 64-bit value.

    Ray hits against 32-bit triangle records compute/bvh-core.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Ray and triangle

    Whether a ray meets a triangle and at what distance t and barycentric u, v.

    t = (e2 · (s × e1)) ÷ (e1 · (d × e2))

    Ray hits against 32-bit triangle records compute/bvh-core.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Ray and box slab test

    The distance at which a ray enters a box, or Infinity.

    t = (box − o) ÷ d, max of the near, min of the far

    Ray hits against 32-bit triangle records compute/bvh-core.js
    • BimCraft
    • ModelCraft
    64-bit
  • Instance inverse matrix

    The world-to-object matrix of an instance as 12 numbers.

    M⁻¹ = adj(M) ÷ det(M), translation = −M⁻¹ t

    Ray hits against 32-bit triangle records compute/bvh-scene.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Ray into object space of an instance

    The ray origin and direction in an instance frame, and the triangle test that follows.

    Ray hits against 32-bit triangle records compute/bvh-scene.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Triangle records from world triangles

    The 12-number triangle records the scatter ray tests use.

    e1 = v1 − v0; e2 = v2 − v0

    Ray hits against 32-bit triangle records rt/rt-scatter-ui.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Accumulation buffer read back

    The per-pixel sums of red, green, blue and sample count.

    Path-traced picture sums and the saved file render/pt-gpu.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Sum of an exact range of samples

    The sum of samples s0 to s0 + spp − 1 for every pixel.

    Path-traced picture sums and the saved file render/pt-gpu.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Render elements read back

    The per-pixel render elements and light-group sums.

    Path-traced picture sums and the saved file render/pt-gpu.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • EXR channels from the sums

    The mean (or raw sum) of each channel for the EXR and render file.

    mean = Σ ÷ max(samples, 1)

    Path-traced picture sums and the saved file render/pt-output.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • 16-bit PNG

    The picture as 16 bits per channel.

    v₁₆ = round(clamp(v, 0, 1) × 65535)

    Path-traced picture sums and the saved file render/pt-output.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Reopening a render file

    The sums and counts read back from the layers file.

    Path-traced picture sums and the saved file render/pt-output.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Save as 16-bit PNG

    Chooses the 32-bit or the 8-bit path to write the 16-bit PNG.

    Path-traced picture sums and the saved file render/render-ui.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Vertices and loose edges

    The point positions of a model definition and its loose edges.

    Model points written to USD usd/m3d.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Mesh arrays

    The point, normal, UV and color arrays of a mesh.

    Model points written to USD usd/m3d.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Number to text

    The text a number is written as, by type.

    f32: text = shortest s with fround(+s) = fround(x)

    Number text in USD files usd/usda-write.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Shortest digits

    A number to p significant digits without trailing zeros.

    Number text in USD files usd/usda-write.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    64-bit
  • Type name to number type

    Which number type a USD type name uses (32-bit float, half or 64-bit double).

    Number text in USD files usd/sdf.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    Exact
  • Inline values

    A value that the file stores inside its 32-bit payload word.

    Floats read from USD files usd/usdc-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Raw arrays

    A packed array of numbers of one type.

    Floats read from USD files usd/usdc-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Compressed float arrays

    An array stored as whole numbers or as a lookup table and indexes.

    Floats read from USD files usd/usdc-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Float text rounding

    A float or half value read from .usda text.

    Floats read from USD files usd/usda-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Arrays from text

    A list of parsed numbers as a typed array of the right type.

    Floats read from USD files usd/usda-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Half to float

    The value of a 16-bit half float.

    v = ± (1 + m ÷ 1024) × 2^(e − 15)

    Half floats in USD usd/util.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Float to half

    The 16-bit half closest to a number.

    Half floats in USD usd/util.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Half to float

    The value of a 16-bit half float.

    v = ± (1 + m ÷ 1024) × 2^(e − 15)

    Half floats in EXR exr/util.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Float to half

    The 16-bit half closest to a number.

    Half floats in EXR exr/util.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Depth, volume and flow unit factors

    Converts the solver's meters, cubic meters and cubic meters per second to the units the window shows.

    mm = m × 1000; in = m × 39.3700787; yd³ = m³ ÷ 0.028316846592 ÷ 27; ft³/s = m³/s ÷ 0.028316846592

    Rainfall run read-outs: deepest water and depth scale rain-ui.js
    • CivilCraft
    64-bit
  • Deepest water

    The deepest water anywhere in the run, as shown in the facts list.

    deepest = max over cells of maxDepth, converted to mm or in

    Rainfall run read-outs: deepest water and depth scale rain-ui.js
    • CivilCraft
    32-bit in part
  • Depth scale of the picture

    The depth at which the picture reaches its deepest color, printed in the legend.

    top = max(0.02, 99.5th percentile of wet maxDepth cells)

    Rainfall run read-outs: deepest water and depth scale rain-ui.js
    • CivilCraft
    32-bit in part
  • Assistant rounding to 3 decimals

    Rounds a result to 3 decimals before the assistant is given it.

    round(v × 1000) ÷ 1000

    Assistant and window read-outs of radio link and coverage geo-agent.js
    • CivilCraft
    64-bit
  • Coverage share and map

    The share of the area covered, the farthest covered point and a coarse map of received power.

    map cell = r3(p) when p ≥ sensitivity, else null

    Assistant and window read-outs of radio link and coverage geo-agent.js
    • CivilCraft
    32-bit in part
  • Coverage read-out in the window

    The share covered, the farthest covered distance and the cell count shown for a coverage item.

    covered % = covered × 100; farthest = distance as returned

    Assistant and window read-outs of radio link and coverage geo-ui.js
    • CivilCraft
    32-bit in part
  • Start editing a key

    Saves the current points as the basis and shows the key at full strength.

    point = basis + offset

    Shape keys: offsets, editing and blending anim/shapes.js
    • ModelCraft
    32-bit in part
  • Finish editing a key

    Turns the edited points into the key's offsets and puts the mesh back to its basis.

    offset = edited − basis; point = basis

    Shape keys: offsets, editing and blending anim/shapes.js
    • ModelCraft
    32-bit in part
  • Key from imported positions

    Makes a key that moves the basis to a list of positions (glTF morph targets, USD blend shapes).

    offset = position − basis point

    Shape keys: offsets, editing and blending anim/shapes.js
    • ModelCraft
    32-bit in part
  • Blend of the keys

    The points of a mesh with each key at its weight.

    pᵢ = basisᵢ + Σ wₖ × offsetₖ,ᵢ

    Shape keys: offsets, editing and blending anim/shapes.js
    • ModelCraft
    32-bit in part
  • Deformed copy of a mesh

    The mesh moved by its shape keys and then its skin, which the view, picking and exports read.

    points = blend of keys; then skin applied to the same array

    Shape keys: offsets, editing and blending anim/deform.js
    • ModelCraft
    32-bit in part
  • Normalized mode shapes

    Samples each mode at the plot vertices and scales it to a largest displacement of 1.

    uᵥ = sample(modeᵥ) ÷ max |u|

    Mode shapes returned by the simulation worker sim-worker.js
    • PartCraft
    32-bit in part
  • Temperature range of the plot

    The lowest and highest temperature used for the plot scale and its tick labels.

    lo = min T, hi = max T over all vertices (all frames when transient)

    Thermal window temperature range and balance read-outs sim-thermal-ui.js
    • PartCraft
    32-bit in part
  • Probed temperature and flux

    The temperature and flux text shown when a point is probed.

    Thermal window temperature range and balance read-outs sim-thermal-ui.js
    • PartCraft
    32-bit in part
  • Heat balance imbalance

    The unbalanced heat in watts and as a percent of the larger of inflow and outflow.

    percent = 100 × |imbalance| ÷ max(inflow, outflow, 1e-300)

    Thermal window temperature range and balance read-outs sim-thermal-ui.js
    • PartCraft
    64-bit
  • Mass from volume and density

    The mass of a part in grams.

    m = V × ρ ÷ 1000

    Part and assembly mass in the bill of materials, measure panel and assistant bom.js
    • PartCraft
    64-bit
  • Rounding of the exported bill

    The numbers written into the bill of materials CSV.

    value = round to 3 decimals

    Part and assembly mass in the bill of materials, measure panel and assistant bom.js
    • PartCraft
    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.