Resources
Numerical accuracy
The calculations in our apps: the policy each one is under, the precision it runs at, and the code itself.
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.
- Numbers in the apps
- Graphics processor
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.
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.