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

  • Base shear and story forces

    The base shear, the force on each floor and the shear in each story.

    V = Cs W; Cvx = wx hx^k ÷ Σ wi hi^k; Fx = Cvx V; Vx = Σ F from the top down

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Story force on a rigid floor

    Puts a story force on a floor at its master point, with the accidental torsion.

    Mz = −((x₀ − x_m) Fy − (y₀ − y_m) Fx) ± 0.05 × plan size × F

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Design drift against the allowable

    The design story drift and its ratio to the allowable drift.

    δ = Cd δ_e ÷ Ie; allowed = 0.020, 0.015 or 0.010 × story height; ratio = δ ÷ allowed

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Suggested floor levels

    The heights at which level members meet, offered as the building's floors.

    z = (z_a + z_b) ÷ 2 of a level member; levels within 1 mm are one; stored z rounded to 0.1 mm

    Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Floor weights into newtons

    Turns the floor weights typed in kN into the N the procedure works in.

    w (N) = w (kN) × 1000

    Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Period of the analyzed frame

    The fundamental period in each direction from the floor weights and the frame's displacements under the seismic forces.

    T = 2π √(Σ wᵢ δᵢ² ÷ (g Σ fᵢ δᵢ))

    Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Weight of each floor from the loads

    The vertical load of chosen load cases gathered at each floor, as its seismic weight.

    node load = node forces + member equivalent loads + plate corner loads; each node's load goes to the floor at or above it

    Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • A number as report text

    Writes a value with a fixed number of decimals.

    text = v.toFixed(d); 0 when |v| < 0.5 × 10⁻ᵈ

    Numbers in the frame analysis report frame/frame-report.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Force in kN

    A force in newtons printed in kilonewtons.

    kN = N ÷ 1000, 2 decimals; kN·m = N·mm ÷ 10⁶, 2 decimals

    Numbers in the frame analysis report frame/frame-report.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Reactions, largest displacement and the envelope

    Gathers each set's reactions, the node that moves most, each member's extremes, and the largest value of each force over all sets.

    displacement = √(ux² + uy² + uz²); envelope = the value with the largest magnitude over the sets

    Numbers in the frame analysis report frame/frame-report.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Deflection as a span ratio

    Prints a member's deflection as L over a whole number.

    'L/' + round(L ÷ deflection)

    Numbers in the frame analysis report frame/frame-report.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Demand and capacity as text

    Prints a design check's demand and capacity in kN or kN·m.

    kN = round(N ÷ 10) ÷ 100; kN·m = round(N·mm ÷ 10⁴) ÷ 100; ratios to 3 decimals

    Numbers in the frame analysis report frame/frame-design.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Utilization as a percentage

    Prints a utilization ratio as a percentage with one decimal.

    round(ratio × 1000) ÷ 10, 1 decimal

    Numbers in the frame analysis report frame/frame-design.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • A number in the concrete and seismic tables

    Writes a value with a chosen number of decimals.

    round(v × 10ᵈ) ÷ 10ᵈ, then d decimals

    Numbers in the frame analysis report frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Values in the shared problem list

    The found and required values attached to a failed concrete check or drift.

    utilization rounded to 0.0001; drift rounded to 0.01 mm

    Numbers in the frame analysis report frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Slab and wall rows of the report

    For each slab or wall: its largest deflection, its largest positive and negative moments, twisting moment and shear.

    max and min of the plates' center values; Q = √(Qx² + Qy²); w = largest node displacement; kN·m/m = N·mm/mm ÷ 1000, 2 decimals

    Numbers in the frame analysis report frame/plate-draw.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Values in a slab problem

    The required and provided steel, or the shear and its strength, attached to a failed slab check.

    steel rounded to 0.1 mm²/m; shear to 0.1 kN/m

    Numbers in the frame analysis report frame/slab-design.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Deflected shape

    The members' deflected shape, enlarged so it can be seen.

    drawn point = point + scale × displacement; scale = 0.015 × model size ÷ largest displacement

    Analysis results drawn on the model frame/frame-draw.js
    • CadCraft
    • BimCraft
    • DetailCraft
    32-bit, display only
  • Force diagram beside a member

    A filled diagram of one internal force drawn square to each member, with its largest value labeled.

    height = value × 0.08 × model size ÷ largest value

    Analysis results drawn on the model frame/frame-draw.js
    • CadCraft
    • BimCraft
    • DetailCraft
    32-bit, display only
  • Plate contours

    Each plate as two triangles colored by its corner values, with the largest values labeled.

    color = ramp(|value| ÷ largest |value|); kN·m/m = N·mm/mm ÷ 1000

    Analysis results drawn on the model frame/plate-draw.js
    • CadCraft
    • BimCraft
    • DetailCraft
    32-bit, display only
  • Arcs into chords

    Replaces each bulge arc of a path by straight chords that stay within a tolerance of the arc.

    θ = 4 atan(b); r = chord ÷ (2 sin(|θ| ÷ 2)); steps = ⌈|θ| ÷ (2 acos(1 − min(tol, r) ÷ r))⌉

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Signed area of a loop

    The area of a closed path, used to tell which loop is the larger when one lies in another.

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

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Length of a path

    The total length of a flattened path.

    L = Σ √(Δx² + Δy²)

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Which loop lies in which

    Counts how many other loops contain each loop, so inner shapes are cut first.

    two edge midpoints inside the other loop, and the other loop larger in area

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Turn into and out of the fill direction

    Rotates a point by the fill angle so the fill lines are horizontal, and back.

    x′ = x cos a − y sin a; y′ = x sin a + y cos a; a in degrees × π ÷ 180

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Fill lines of a closed shape

    The scan lines that fill the even–odd region of the loops, with the spans to burn on each line.

    y_k = (k + 0.5) × interval + offset; x = a_x + (b_x − a_x)(y − a_y) ÷ (b_y − a_y)

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Machine coordinates

    Moves every point so the job's lower left corner is the machine's 0, 0.

    x_machine = x − x_origin; y_machine = y − y_origin

    Laser job paths, fill lines and run estimate laser/laser-plan.js
    • CadCraft
    • PartCraft
    64-bit
  • Burn length, travel and time

    The length burned, the length traveled with the laser off, and the time of the job.

    burn = Σ d × passes; time = Σ (d ÷ speed) × 60 × passes

    Laser job paths, fill lines and run estimate laser/laser-plan.js
    • CadCraft
    • PartCraft
    64-bit
  • Fill lines into moves

    Turns the fill lines back to drawing coordinates and adds the overscan before and after each line.

    start = first − dir × overscan; end = last + dir × overscan

    Laser job paths, fill lines and run estimate laser/laser-plan.js
    • CadCraft
    • PartCraft
    64-bit
  • Picture rows into moves

    Lays a picture's burn levels on its rectangle as rows of moves with a power for each run.

    cols = round(w ÷ interval); dx = w ÷ cols; y = y₀ + h − (r + 0.5) dy; power = min + (max − min) × level ÷ 255

    Laser job paths, fill lines and run estimate laser/laser-plan.js
    • CadCraft
    • PartCraft
    64-bit
  • Gray value of each engraving cell

    The average gray of the picture's pixels under each cell of the engraving grid.

    gray = Σ w × pixel ÷ Σ w, w = overlap area of pixel and cell

    Burn levels of an engraved picture laser/laser-image.js
    • CadCraft
    • PartCraft
    32-bit in part
  • Burn level of each cell

    Turns the gray values into burn levels from 0 to 255 by the chosen method.

    darkness = 1 − (gray ÷ 255)^gamma; threshold: darkness > t; gray steps: round(round(darkness × (n − 1)) ÷ (n − 1) × 255)

    Burn levels of an engraved picture laser/laser-image.js
    • CadCraft
    • PartCraft
    32-bit in part
  • Points written to a file

    Each point's northing, easting and elevation as text.

    text = v.toFixed(3); 0 when |v| < 0.0005

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Points read from a file

    Turns the northing, easting and elevation text of a row into numbers.

    x = Number(E); y = Number(N); z = Number(Z) or none

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Difference between a design and an as-built point

    The offsets in x, y and height, the horizontal and 3D distance, and whether the point is within tolerance.

    dh = √(dx² + dy²); d3 = √(dh² + dz²); out when dh > tol or |dz| > tolZ

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Matching points by nearness

    Pairs each design point with the closest unused as-built point within a radius.

    pairs sorted by horizontal distance, taken closest first; radius = 10 × tol by default

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Summary of the comparison

    The counts, the largest horizontal and height differences and the root mean square of the horizontal differences.

    rms = √(Σ dh² ÷ n)

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Comparison table

    The rows of the comparison as text for the page and the CSV.

    text = v.toFixed(3)

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Add, subtract, multiply, divide

    The four arithmetic functions on integers and reals.

    all integers: 32-bit result; any real: 64-bit result; integer ÷ integer truncates toward zero

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • FIX: a real to an integer

    Drops the fraction of a number.

    int(trunc(x))

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • Math.sqrt, Math.exp, Math.log, Math.pow

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • EQUAL with a fuzz

    Whether two numbers or lists of numbers are equal within a given amount.

    |a − b| ≤ fuzz

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • RTOS: a number as text

    Formats a length in decimal or in the drawing's other length formats.

    decimal: v.toFixed(prec); 0 when |v| < 0.5 × 10⁻ᵖʳᵉᶜ

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • ANGTOS: an angle as text

    Formats an angle in degrees, degrees-minutes-seconds, grads, radians or surveyor's bearings.

    degrees = a × 180 ÷ π; grads = a × 200 ÷ π; minutes = (deg − whole) × 60

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • ANGTOF: text to an angle

    Reads an angle written in any of the angle formats and returns radians.

    degrees × π ÷ 180; d + m ÷ 60 + s ÷ 3600; grads × π ÷ 200

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • Unit factors for CVUNIT

    The factor of each unit to its base unit: meter, radian, kilogram or square meter.

    inch 0.0254; foot 0.3048; yard 0.9144; mile 1609.344; pound 0.45359237; sq inch 0.00064516; sq foot 0.09290304; acre 4046.8564224

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • CVUNIT: convert between units

    Converts a number or a list of numbers from one unit to another of the same kind.

    result = v × from ÷ to

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • POLAR, DISTANCE and ANGLE

    A point at an angle and distance from another, the distance between two points, and the angle of the line between them.

    q = p + d (cos a, sin a); dist = √(Δx² + Δy² + Δz²); angle = atan2(Δy, Δx) into 0 to 2π

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • INTERS: where two lines meet

    The intersection of two lines or segments given by their end points.

    den = Δ₁ × Δ₂; u = ((p₃ − p₁) × Δ₂) ÷ den; q = p₁ + u Δ₁

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    64-bit
  • ATOI and ATOF: text to a number

    Reads the leading whole number or real number of a text.

    parseInt or parseFloat of the leading number

    LISP arithmetic, conversions and geometry lisp/builtins.js
    • CadCraft
    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.