Resources

Numerical accuracy

The calculations in our apps: the policy each one is under, the precision it runs at, and the code itself.

  • 891 calculation policies
  • 6,771 calculations in 1,182 source files
  • 137 exact
  • 6,196 in 64-bit
  • 293 with a 32-bit step
  • 422 open items
  • Last reviewed

Review in progress. The pass over the code base started November 5, 2026. So far it lists 891 policies and 6,771 calculations. The rest is being reviewed and will be added here.

The standard

  • 64-bit everywhere

    Every calculation runs in 64-bit floating point (IEEE 754 double precision), from the number you type to the number you read.

  • 15 digits, always

    A 64-bit number keeps any 15-digit value intact and takes 17 digits to write out in full. Our rule for every calculation: carry all 17 between steps, and order the arithmetic so that avoidable rounding never costs one of the first 15.

  • 32-bit gets a warning

    A 32-bit number keeps about 7 digits. Where a 32-bit step can reach a number you read, the calculation is flagged in the lists below, and the app will warn that the result can have less mathematical precision.

This device

The apps calculate in 64-bit on every device. Work handed to the graphics processor is the exception: graphics processors compute in 32-bit, which can provide less mathematical precision.

Calculation policies

A policy says how one family of calculations keeps its precision. Open one to see its calculations, by source file, and their code.

  • 64-bit Reviewed

    Unit conversion

    Converts lengths, areas, volumes, angles and slopes between 57 units.

    Every app

    Approach
    Exact values
    4 calculations
    Convert between two units, Typed text to a unit, A value to the base unit, A base value to a unit
  • 64-bit Reviewed

    Surface triangulation

    Builds a triangulated surface from survey points and breaklines, then its elevations, contours and slopes.

    • BimCraft
    • CivilCraft
    Approach
    Exact predicates
    6 calculations
    Which side of an edge, Is an edge Delaunay, Triangle under a point, Elevation at a point, Slope of a triangle, Plan and surface area
  • 64-bit Reviewed

    3D frame analysis

    Member forces, reactions and deflections of a 3D frame by the direct stiffness method.

    • CadCraft
    • BimCraft
    • DetailCraft
    Approach
    64-bit, direct
    4 calculations
    Member stiffness matrix, Equivalent nodal loads, Banded Cholesky factorisation, Forward and back substitution
  • 64-bit Reviewed

    Takeoff lengths and areas

    Lengths, perimeters and areas of measured runs and outlines, with arcs and cut-outs.

    • TakeoffCraft
    Approach
    64-bit, direct
    6 calculations
    Length of a segment or arc, Area under an arc, Area of an outline, Perimeter, Net area with cut-outs, Centroid
  • 64-bit Reviewed

    Calc sheets

    Unit-aware formulas saved with the file: spans, loads, moments, pass or fail checks.

    Every app

    Approach
    64-bit, direct
    3 calculations
    Add, subtract, multiply, divide, Comparisons, Number shown
    Open item
    Show up to 15 significant digits when asked.
  • 64-bit Reviewed

    B-spline basis functions

    The basis functions and derivatives under every NURBS curve and surface.

    • ModelCraft
    • PartCraft
    Approach
    64-bit, direct
    3 calculations
    Knot span, Basis functions, Basis function derivatives
  • 64-bit Reviewed

    Map coordinate reprojection

    Moves points, and a model's position on the map, between coordinate systems.

    • BimCraft
    • CivilCraft
    Approach
    64-bit, stated limit
    3 calculations in 2 files
    Reproject points, Map origin from latitude and longitude, Model to map conversion
  • 64-bit Reviewed

    Line, arc and circle intersections

    Where two drawn objects cross: the basis of snaps, trim and extend.

    • CadCraft
    Approach
    64-bit, direct
    4 calculations
    Line and line, Line and circle, Circle and circle, Is the point on the object
    Open item
    Exact orientation tests for the near-parallel and near-tangent cases.
  • 32-bit in part Reviewed

    Stress analysis

    Linear static stress and displacement of a part on a voxel grid.

    • PartCraft
    Approach
    32-bit step, flagged
    3 calculations
    Conjugate gradient solve, Von Mises stress, Stress and displacement at each node, and their maximum
    Open item
    Take the reported maximum stress and displacement from the 64-bit values.
  • 32-bit in part Reviewed

    Solid modeling

    Rebuilds a part from its feature history: extrudes, cuts, patterns and boolean operations.

    • PartCraft
    Approach
    32-bit step, flagged
    2 calculations
    Volume, surface area and bounding box, Vertex positions of the body
    Open item
    Read positions back in 64-bit wherever a measurement uses them.
  • 64-bit Reviewed

    Room reverberation time

    Works out how long sound takes to die away in each room, per octave band, from the room's volume, its surfaces and the air.

    • BimCraft
    Approach
    64-bit, stated limit
    11 calculations in 2 files
    Sabine constant, Sound absorbed by the air, Air absorption per meter, Reverberation time per band, Reverberation over the target, Distance from a point to a room outline, and 5 more
    Open item
    Replace the literal 4.343 in airM with 10 ÷ ln 10 and write 0.161 from its definition, 24 ln 10 ÷ c.
  • 32-bit in part Reviewed

    Room impulse response and listening

    Builds a room's impulse response from its reverberation times, and the sound of a clap, speech or music heard through it, to play or save.

    • BimCraft
    Approach
    32-bit step, flagged
    9 calculations
    Fast Fourier transform, Octave band weight, Zero-phase band filter, Decaying reverberant tail, First reflections and the tail's level, Reverberation time measured from a response, and 3 more
    Open item
    Return the impulse response and the convolved sound as Float64Array, and write the WAV file with more than 16 bits per sample.
  • 64-bit Reviewed

    Frame model from a building model

    Turns the model's beams, columns, braces and concrete slabs and walls into the lines, sections, joints, supports and loads the frame analysis solves.

    • BimCraft
    Approach
    64-bit, stated limit
    17 calculations
    Length unit of the file, Axis placement, Placement chain, Rounded rectangle outline, Circle outline, I-shape outline, and 11 more
    Open item
    Give round and filleted profiles their exact area and second moments instead of the polygon's; a 64-sided circle is 0.16 % under in area.
  • 64-bit Reviewed

    Automatic plan dimensions

    Chooses the points an automatic row of dimensions measures between: the building's overall size and the stops along each outside edge.

    • BimCraft
    Approach
    64-bit, direct
    6 calculations
    Plan extents and edge tolerance, Dimension line offset, Reference station on a wall, Is this dimension already there, Measured segment along an axis, Stops along an outside edge
    Open item
    Save each reference's station along its wall without rounding it to six decimals.
  • 64-bit Reviewed

    Issue viewpoints in BCF files

    Converts cameras and section planes between the viewer and the model's own coordinates, and writes and reads them in BCF issue files.

    • BimCraft
    • ModelCraft
    Approach
    64-bit, direct
    8 calculations
    Inverse of a 4 × 4 matrix, Viewer point to model point, Viewer direction to model direction, Model point to viewer point, Model direction to viewer direction, Numbers written to the file, and 2 more
    Open item
    Write direction components with all their digits; six decimals suit positions in meters but are coarse for unit vectors.
  • 32-bit in part Reviewed

    Measurements and typed values in the main window

    The measured distances and areas, located points, typed lengths and quantity figures that BimCraft's main window shows or writes back to the file.

    • BimCraft
    Approach
    32-bit step, flagged
    9 calculations
    Distance and area measured in 3D, Map position of a picked point, Latitude and longitude as text, Lengths shown in Properties, A typed length written to the file, Numbers in the quantity tables, and 3 more
    Open item
    Take measured points and face areas from the model's 64-bit geometry instead of the viewer's 32-bit mesh positions.
  • 64-bit Reviewed

    Element quantities for carbon and cost

    Reads each element's volume, area and length and splits the volume between its materials, as the embodied carbon and cost calculations use them.

    • BimCraft
    Approach
    64-bit, direct
    5 calculations
    Which stated quantity is used, Volume of a mesh, Share of the volume per material, Floor area of the building, Quantities per material part
    Open item
    Sum the mesh volume from a point on the body, such as its first corner, instead of the coordinate origin.
  • 32-bit in part Reviewed

    Clash check

    Finds pairs of elements whose surfaces run into each other and reports how deep their boxes overlap.

    • BimCraft
    Approach
    32-bit step, flagged
    5 calculations
    World triangles and box of each element, Overlap of two boxes, Candidate pairs and the result list, Do two elements' surfaces cross, Triangle against triangle
    Open item
    Store the world triangles in a Float64Array built from 64-bit geometry, so the crossing test and the depth do not rest on 32-bit positions.
  • 64-bit Reviewed

    Point cloud slice and scan alignment

    Cuts a point cloud at a level's height for drawing over it, and finds the turn and the lift that set a scan square to the building and its floor on a level.

    • BimCraft
    Approach
    64-bit, stated limit
    9 calculations
    Cloud to plan matrix, Slice of the cloud at the cut height, Nearest slice point, Turn that sets the scan square, Sharpness of a trial turn, Wall direction from line fits, and 3 more
  • 64-bit Reviewed

    Interior elevations and their dimensions

    Frames each wall of a room as an interior elevation, writes its width, height and level dimensions, and turns placed items.

    • BimCraft
    Approach
    64-bit, direct
    7 calculations in 2 files
    Middle of a room, Frame of an interior elevation, Dimension values on elevations and sections, Where a door or window is tagged, Views placed at scale on the sheet, Where a drag puts an item, and 1 more
  • 64-bit Reviewed

    Coordinate readouts and survey point

    Says where a point is: its distance from the project origin, the level it is on, its height above that level and its map grid coordinates.

    • BimCraft
    Approach
    64-bit, direct
    8 calculations
    Project origin and survey point, Level a height is on, Foot and US survey foot, Map grid coordinates as text, Height above the level, Plan point to file coordinates, and 2 more
  • 64-bit Reviewed

    Costs on the schedule

    Prices each element from its quantities, adds the cost up per scheduled task, spreads it over the task's days and totals the cash flow.

    • BimCraft
    Approach
    64-bit, stated limit
    13 calculations
    Unit factors for priced quantities, Dollars to whole cents, Whole cents to dollars, Quantity in the price's unit, Cost of each element, Cost of each scheduled task, and 7 more
    Open item
    Write the cubic yard and cubic foot factors exactly, as 0.764554857984 and 0.028316846592.
  • 64-bit Reviewed

    Placing a model on the map

    Builds and reads the map conversion that places a model on a map grid, and re-expresses it in another coordinate system.

    • BimCraft
    Approach
    64-bit, stated limit
    6 calculations
    Rounding of stored map values, Latitude and longitude of a grid point, Map conversion as a matrix, Rotation of the model on the grid, True north in the model, Map conversion moved to another system
  • 64-bit Reviewed

    Sky view and daylight factor

    Works out how much of the sky each window sees and the daylight factor on a grid of points in a room.

    • BimCraft
    Approach
    64-bit, stated limit
    19 calculations
    Illuminance of the whole sky, Overcast sky integrated in altitude, Overcast sky luminance, Hidden altitude intervals joined, What hides the sky in one direction, Sky profile of a window, and 13 more

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

Approaches

Every policy takes one of five approaches to keeping its precision.

Exact values 6 policies
Constants and factors are held as exact fractions from their definitions. The arithmetic is ordered so that no rounded factor is ever used.
Exact predicates 1 policy
Coordinates are 64-bit. The yes-or-no decisions that shape the geometry (which side of a line, inside or outside a circle) are computed exactly, so rounding cannot flip one.
64-bit, direct 322 policies
Every value is a 64-bit number from input to result. Formulas are closed form or a direct solve, and every comparison uses a stated tolerance.
64-bit, stated limit 411 policies
The arithmetic is 64-bit, but the method or the data sets the accuracy: a solver tolerance, a mesh, a step size, a datum shift, a table. The limit is stated where the result is shown.
Display only 47 policies
Computed to draw the screen, often in 32-bit on the graphics processor. No number a person reads, saves or exports comes from it.
32-bit step, flagged 104 policies
One step stores or exchanges 32-bit values that reach a number a person reads. It is listed here with its open item, and the step is either moved to 64-bit or the app will warn where the number is read.

Precision is not robustness

Mathematical precision is how many digits a number keeps. Geometric robustness is whether a shape stays valid: every intersection found, every solid closed, every face joined to its neighbors. They are different properties, and a CAD system can have the first without the second.

Every geometric algorithm rests on yes-or-no questions. Is this point left or right of that line? Do these two edges cross? Is this point inside that circle? Each answer is the sign of a small expression. When three points are almost in line, the true value of that expression can be smaller than the rounding error of the arithmetic that computes it, and the sign comes out wrong. That happens at 15 digits as readily as at 7.

One wrong sign is not a small error in the last digit. It is a different decision: an intersection that is missed, two triangles that overlap, a face that points the wrong way, a solid with a gap in it. Every coordinate can be correct to 15 digits while the shape they describe is invalid.

A point C almost on the line from A to B. Magnified, C is a tiny distance to one side of the line. A B C C left or right?
C lies a rounding error away from the line through A and B. Which side it is on decides how the geometry is built.

What makes geometry robust

  • Exact predicates

    The yes-or-no questions are answered exactly. The fast 64-bit answer is used when it is safely away from zero. When it is not, the sign is computed again with as many digits as it takes.

  • Decide once

    A decision about a shape is recorded as topology, and every later step agrees with it. The same question is never asked twice with a chance of two answers.

  • Stated tolerances

    Where a tolerance is used it is written down, scaled to the size of the geometry and applied the same way everywhere.

  • Local origins

    Coordinates far from zero are moved to a local origin before the work, so the digits are spent on the geometry and not on the distance to the origin.

  • Valid by construction

    Algorithms whose result is guaranteed to be a closed solid, whatever the input, in place of ones that repair the result afterwards.

  • More than the language

    These choices matter more than the programming language. JavaScript, C++ and Rust all compute with the same 64-bit numbers: the same algorithm is as robust, or as fragile, in each.

Where our apps stand

The list on this page records both properties. Surface triangulation in CivilCraft and BimCraft uses exact predicates. Solid modeling in PartCraft runs on a kernel whose result is a closed solid by construction. The intersections in the CadCraft app use stated tolerances today, and exact tests for the near-parallel and near-tangent cases are an open item. Each policy says which approach it takes.