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.
Calculations
-
Hardware and gasket quantities
Handles, hinges, locking points, strikers, packers, connectors and the meters of each gasket for a set of windows.
locks = max(2, ⌈perimeter ÷ lock pitch⌉); sash gasket = 2 (w + h) ÷ 1000 m; glass gasket = 4 (gw + gh) ÷ 1000 m
Window and door pieces, glass and hardware addons/windows/lib/model.js64-bit- CadCraft
-
Millimeters per drawing unit
The factor between the drawing's units and the builder's millimeters, and its reciprocal stored with each window.
mm per drawing unit = per × 25.4 (inch rules) or per × 1; kmm = 1 ÷ that
Window and door pieces, glass and hardware addons/windows/main.js64-bit- CadCraft
-
Typed opening size
A size typed as width x height in drawing units, as millimeters.
w = typed w × mm per drawing unit
Window and door pieces, glass and hardware addons/windows/main.js64-bit- CadCraft
-
Pieces from quantities
One entry per piece to cut, from rows with a quantity.
Cutting profile pieces from stock bars addons/windows/lib/cutlist/bars.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Length a bar takes
The length of bar used by a set of pieces, with the saw kerf and the saving when mitred ends share a cut.
used = Σ (length + kerf) − depth × min(⌊mitred ends ÷ 2⌋, mitred pieces − 1)
Cutting profile pieces from stock bars addons/windows/lib/cutlist/bars.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Fewest bars for one stock length
Which pieces go on which bar, and whether the count is proven to be the fewest.
bound = ⌈Σ (length + kerf) ÷ usable − 1e-9⌉; usable = stock − trim at both ends
Cutting profile pieces from stock bars addons/windows/lib/cutlist/bars.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Bars, cut positions, offcuts and waste
The list of bars with each piece's start position, the offcut left on each bar and the totals.
pos accumulates length + kerf; offcut = stock − trims − used; waste % = round((1 − piece length ÷ stock length) × 10⁴) ÷ 100
Cutting profile pieces from stock bars addons/windows/lib/cutlist/bars.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Totals over all profiles
The number of bars, the piece length, the stock length and the waste over every profile and color.
waste = Σ stock length − Σ piece length
Cutting profile pieces from stock bars addons/windows/lib/cutlist/bars.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Raw double, read
A 64-bit value read from eight bytes of the bit stream.
Numbers in a DWG file, read and written bit for bit dwg/bits-read.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Bit double, read
A value stored as a two-bit code: a full 64-bit value, exactly 1.0 or exactly 0.0.
Numbers in a DWG file, read and written bit for bit dwg/bits-read.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Double with default, read
A value stored as the bytes in which it differs from a default value.
Numbers in a DWG file, read and written bit for bit dwg/bits-read.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
64-bit whole number, read
An unsigned 64-bit whole number from two 32-bit halves.
value = high × 2³² + low
Numbers in a DWG file, read and written bit for bit dwg/bits-read.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Bit long long, read
A whole number of up to seven bytes, the count given by three bits.
value = Σ byteᵢ × 256ⁱ
Numbers in a DWG file, read and written bit for bit dwg/bits-read.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Handle reference, read
An object handle, absolute or as an offset from another handle.
value = Σ byte × 256ᵏ; codes 6, 8, A, C: ref + 1, ref − 1, ref + value, ref − value
Numbers in a DWG file, read and written bit for bit dwg/bits-read.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Modular char, read
A signed whole number stored seven bits per byte.
value = Σ (byte & 0x7F) × 2^(7i); the last byte carries 6 bits and the sign
Numbers in a DWG file, read and written bit for bit dwg/bits-read.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Raw double, written
A 64-bit value written as its eight bytes.
Numbers in a DWG file, read and written bit for bit dwg/bits-write.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Bit double, written
A value written as a two-bit code for exactly 0.0 or 1.0, or as a full 64-bit value.
Numbers in a DWG file, read and written bit for bit dwg/bits-write.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Double with default, written
A value written as a two-bit code when it equals its default, or in full.
Numbers in a DWG file, read and written bit for bit dwg/bits-write.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Thickness, written
A thickness written as one bit when it is zero, or as a bit double.
Numbers in a DWG file, read and written bit for bit dwg/bits-write.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Bit long, written
A 32-bit whole number in its short or full form.
Numbers in a DWG file, read and written bit for bit dwg/bits-write.jsExact- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Bit short, written
A 16-bit whole number in its short or full form.
Numbers in a DWG file, read and written bit for bit dwg/bits-write.jsExact- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Bit long long, written
A 64-bit whole number as a three-bit byte count and its bytes.
Numbers in a DWG file, read and written bit for bit dwg/bits-write.jsExact- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Point, written
The three coordinates of a point as bit doubles.
Numbers in a DWG file, read and written bit for bit dwg/bits-write.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Handle bytes, written
A handle as its bytes, most significant first.
byte = v mod 256; v = ⌊v ÷ 256⌋
Numbers in a DWG file, read and written bit for bit dwg/bits-write.jsExact- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Lineweight to stored index
The index written for a lineweight, or the codes for by layer, by block and default.
index of the list value with the smallest |value − lineweight|
Lineweights in a DWG file dwg/model.jsExact- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
-
Stored index to lineweight
The lineweight for an index read from a file.
Lineweights in a DWG file dwg/model.jsExact- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
-
Variant changed to another type
The value of a variant as a string, a double, a single, an integer, a long or a boolean.
integer = round(n); double = n
Number conversion in LISP variants lisp/vla.js64-bit- CadCraft
-
Longest clear part of a move
The part of a straight move that stays clear of other solids.
steps = min(160, max(4, ⌈|δ| ÷ (thin ÷ 2)⌉)); then 24 halvings between the last clear and the first blocked sample
Where a moved solid stops against another m3d/collide.js64-bit- CadCraft
- ModelCraft
-
Thinnest dimension
The smallest box side of the moving pieces and of everything in the way, which sets the sample spacing.
thin = max(0.005, min over boxes of the smallest side above 1e-4)
Where a moved solid stops against another m3d/collide.js64-bit- CadCraft
- ModelCraft
-
Edge through the inside of a face
Whether a segment passes through a face's interior.
sₚ = n·p − d, s_q = n·q − d; t = sₚ ÷ (sₚ − s_q)
Where a moved solid stops against another m3d/collide.js64-bit- CadCraft
- ModelCraft
-
Point in a face
Whether a point on a face's plane lies in one of its triangles.
u, v from cross products ÷ |n|²; inside when u, v, 1 − u − v ≥ −1e-9
Where a moved solid stops against another m3d/collide.js64-bit- CadCraft
- ModelCraft
-
Point inside a solid
Whether a point lies inside the closed surface made of an object's faces.
Where a moved solid stops against another m3d/collide.js64-bit- CadCraft
- ModelCraft
-
Ray against a triangle
The distance along a ray to a triangle, or nothing when it misses.
det = e₁·(d × e₂); u = (s·(d × e₂)) ÷ det; v = (d·(s × e₁)) ÷ det; t = (e₂·(s × e₁)) ÷ det
Where a moved solid stops against another m3d/collide.js64-bit- CadCraft
- ModelCraft
-
Box of a placed component
The bounding box in the model of a component's faces and edges, from its own coordinates and its placement matrix.
X = (m₀x + m₄y + m₈z + m₁₂) ÷ w
Where a moved solid stops against another m3d/collide.js64-bit- CadCraft
- ModelCraft
-
Triangles of a polygon with holes
The triangles of a face as triples of vertex indexes.
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Orientation of three points
Twice the signed area of a triangle, whose sign says which way three points turn.
(q_y − p_y)(r_x − q_x) − (q_x − p_x)(r_y − q_y)
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Direction of a ring
Whether a ring of points runs clockwise or counterclockwise.
Σ (x_j − x_i)(y_i + y_j)
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Is a corner an ear
Whether the triangle at a corner is convex and holds no other point of the polygon.
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Point in a triangle
Whether a point lies in or on a triangle.
three comparisons (c − p) × (a − p) ≥ 0, each written as product ≥ product
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Duplicate and collinear points removed
Drops points that repeat their neighbor or lie exactly on the line between their neighbors.
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Bridge from a hole to the outer ring
The outer-ring point a hole is connected to, found by a ray to the left from the hole's leftmost point.
x = p_x + (h_y − p_y)(n_x − p_x) ÷ (n_y − p_y); tan = |h_y − p_y| ÷ (h_x − p_x)
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Do two edges cross
Whether two segments intersect, used to keep a diagonal from crossing the polygon.
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Is a diagonal's midpoint inside
Whether the middle of a candidate diagonal lies inside the polygon.
crossing count of a ray from ((a_x + b_x) ÷ 2, (a_y + b_y) ÷ 2)
Triangulation of faces with holes m3d/earcut.js64-bit- CadCraft
- ModelCraft
- TakeoffCraft
-
Start and finish of each step
When each step of each batch starts and finishes, and on which vessel.
release = start + b × interval; t₀ = max(ready, vessel free); t₁ = t₀ + duration; wait = t₀ − ready
Batch schedule and batch inventory process/batch.js64-bit- CadCraft
- BimCraft
-
Makespan, utilization, cycle time and batches per day
The length of the whole schedule, how busy each vessel is, the steady cycle time and the batches per day it allows.
makespan = max finish − start; utilization = Σ(end − start) ÷ makespan; cycle = (work + clean × uses) ÷ vessels; batches per day = 24 ÷ cycle
Batch schedule and batch inventory process/batch.js64-bit- CadCraft
- BimCraft
-
Hours to whole days for the Gantt view
The start and finish day of each task for the schedule view, which works in whole days.
start day = day0 + ⌊start ÷ 24 + 1e-9⌋; finish day = day0 + max(⌊(finish − 1e-9) ÷ 24⌋, ⌊start ÷ 24 + 1e-9⌋)
Batch schedule and batch inventory process/batch.js64-bit- CadCraft
- BimCraft
-
Batch mole inventory and atom balance
The moles of each component in each vessel after every operation, what was discharged, and how well the atoms balance.
transfer: q = n × fraction; react: ξ = conversion × n_key ÷ |ν_key|, n ← n + ν × ξ; atom error = max |charged − held| ÷ charged
Batch schedule and batch inventory process/batch.js64-bit- CadCraft
- BimCraft
-
Monod growth in a batch or fed-batch vessel
Concentrations of biomass, substrate and product, the volume, and their masses at each output time.
μ = μmax × S ÷ (Ks + S); dX/dt = (μ − kd) X − D X; dS/dt = −(μ ÷ Yxs + m) X + D (Sf − S); dP/dt = (α μ + β) X − D P; dV/dt = F; D = F ÷ V
Fermentation (Monod kinetics) process/batch.js64-bit- CadCraft
- BimCraft
-
Channel counts and counts with spare
How many analog and digital inputs and outputs the I/O list needs, and how many once the spare allowance is added.
with spare = ⌈n × (1 + spare)⌉
I/O channel counts with spare allowance process/controls.js64-bit- CadCraft
- BimCraft
-
Lower and higher heating value
The heat released by burning one mole of a component, with the water formed as vapor or as liquid.
LHV = h_f − n_C × h_f(CO2) − (n_H ÷ 2) × h_f(H2O gas); HHV uses h_f(H2O liquid)
Process emissions (CO2 equivalent) process/emissions.js64-bit- CadCraft
- BimCraft
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.