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

  • 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
  • Scalar from a field

    One number per node or element from a vector or stress field.

    |u| = √(ux² + uy² + uz²); σvm as above

    Script result fields and meshes shown in the window cs-ui.js
    • PartCraft
    64-bit
  • Range of the plotted values

    The lowest and highest value that set the color scale.

    hi ≤ lo → hi = lo + max(|lo|, 1) × 1e-6

    Script result fields and meshes shown in the window cs-ui.js
    • PartCraft
    64-bit
  • Deformation scale

    A round scale that makes the largest displacement about 8 percent of the model size.

    raw = 0.08 × diagonal ÷ max |u|, rounded up to 1, 2, 5 or 10 × 10ᵉ

    Script result fields and meshes shown in the window cs-ui.js
    • PartCraft
    32-bit, display only
  • Outer surface of a mesh

    The outer surface of a solid or surface mesh as triangles for the view.

    Script result fields and meshes shown in the window cs-ui.js
    • PartCraft
    32-bit, display only
  • 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
  • Mass properties reported to the assistant

    Volume, area, center, mass and inertia of the built solid.

    mass = V × ρ ÷ 1000; inertia = tensor × ρ ÷ 1000

    Part and assembly mass in the bill of materials, measure panel and assistant agents.js
    • PartCraft
    32-bit in part
  • Mass properties in the measure panel

    Where the measure panel gets a body's mass properties, exact or from the mesh.

    Part and assembly mass in the bill of materials, measure panel and assistant measure-ui.js
    • PartCraft
    32-bit in part
  • Number format in the measure panel

    Rounds a measure value to a number of decimals for the panel.

    toFixed(dp); |v| < 1e-12 shown as 0

    Part and assembly mass in the bill of materials, measure panel and assistant measure-ui.js
    • PartCraft
    64-bit
  • Default tangent modulus and its check

    Sets the slope after yield when none is given and flags one that is not below E.

    Et = E ÷ 100 when not given

    Nonlinear study fields and thermal stress history nlstudy.js
    • PartCraft
    64-bit
  • Contact penetration problem

    Flags a contact penetration over 1 percent of the element size, with the values it reports.

    problem when max penetration > 0.01 × h; pct = 100 × pen ÷ h

    Nonlinear study fields and thermal stress history nlstudy.js
    • PartCraft
    64-bit
  • Time steps solved for stress

    Chooses which time steps of the heat run get a stress solve.

    stepᵢ = round(i × steps ÷ (n − 1)), i = 0…n−1

    Nonlinear study fields and thermal stress history thermal-history.js
    • PartCraft
    Exact
  • Thermal load per step

    The load vector of each stress step and the temperature range of the worst step.

    ΔT = T − Tref; f = f_mech + ft(ΔT)

    Nonlinear study fields and thermal stress history thermal-history.js
    • PartCraft
    64-bit
  • Solid cubes from a distance grid

    Marks each cube solid or not from its corner values.

    solid when Σ₈ corner values < 0; origin = lo × h

    Voxel grid and lattice struts field/voxels.js
    • PartCraft
    64-bit
  • Lattice struts in a box

    The strut list of a lattice that fills a box.

    cells = ⌈(extent ÷ cell) − 1e-9⌉; end = corner + (i + a) × cell

    Voxel grid and lattice struts field/lattice.js
    • PartCraft
    64-bit
  • Sewing tolerance from model size

    The tolerance with which patch edges are joined.

    tol = max(1e-7, 1e-7 × max |coordinate|)

    Form cage to exact solid: sewing and volume form-brep.js
    • PartCraft
    64-bit
  • Sewn solid and its volume

    Sews the faces, makes a solid, and measures its volume.

    Form cage to exact solid: sewing and volume form-brep.js
    • PartCraft
    64-bit
  • Millimeters per PDF point

    The size of one PDF point in millimeters, the base of every preset scale.

    MM_PER_PT = 25.4 ÷ 72

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Calibration from a preset scale

    Real millimeters per point for a scale chosen from the list, such as 1/4 inch = 1 foot or 1:100.

    mmPerPt = (25.4 ÷ 72) × ratio

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Calibration from two picked points

    Real millimeters per point from a distance picked on the sheet and the real length typed for it.

    mmPerPt = real length (mm) ÷ picked distance (pt)

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Fractions and mixed numbers

    Reads 1/2, 6 1/2 or 12.5 as a number.

    a/b → a ÷ b; n a/b → n + a ÷ b

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • A typed length in millimeters

    Reads what a person types for a length (24'-0", 12' 6 1/2", 3.5 m, 900 mm, or a bare number in the chosen unit) as millimeters.

    mm = feet × 304.8 + inches × 25.4; metric: value × 1, 10 or 1000

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • A typed length with arithmetic

    Reads entries such as 12'6" + 3/4" or 2*450mm as one length in millimeters.

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Length as text

    Writes a length in millimeters in the sheet's unit: feet and inches, feet, inches, meters or millimeters.

    ft-in: round(mm ÷ 25.4 × 16) sixteenths; ft: mm ÷ 304.8; in: mm ÷ 25.4; m: mm ÷ 1000

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Area as text

    Writes an area in square millimeters in the area unit that goes with the sheet's length unit.

    sq ft = mm² ÷ 92903.04; sq in = mm² ÷ 645.16; m² = mm² ÷ 1e6

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Area and perimeter of an outline

    The area and the perimeter of a closed outline, in points² and points.

    area = |Σ (xᵢ·yᵢ₊₁ − xᵢ₊₁·yᵢ)| ÷ 2; perimeter = Σ hypot(Δx, Δy)

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Area measurement with cut-outs

    The area and perimeter text of an area markup: the outline less its cut-outs, in real units.

    area = (A_outline − Σ A_cut-out) × mmPerPt²; perimeter = (P_outline + Σ P_cut-out) × mmPerPt

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Length under a calibration

    A distance in points as a real length in the sheet's unit.

    length = points × mmPerPt

    Sheet scale, typed lengths and measured values units.js
    • MarkupCraft
    64-bit
  • Measured values of a markup

    The length, area and perimeter, count, angle or arc length listed for a markup in the Properties panel and, through valueOf, in lists, CSV and BCF.

    length = hypot(Δx, Δy) × mmPerPt; arc = r × |sweep| × mmPerPt; count = number of marks

    Sheet scale, typed lengths and measured values markupcraft.js
    • MarkupCraft
    64-bit
  • Pointer position on the paper

    The pointer's position on the sheet in the status line, in millimeters or inches of paper.

    mm = pt ÷ 72 × 25.4; in = pt ÷ 72

    Sheet scale, typed lengths and measured values markupcraft.js
    • MarkupCraft
    64-bit
  • Scale carried to a replacement sheet

    When markups are carried to a new revision of a sheet, the old sheet's calibration is given to the new one if it has none.

    |w_old − w_new| ≤ 1 pt and |h_old − h_new| ≤ 1 pt

    Sheet scale, typed lengths and measured values markupcraft.js
    • MarkupCraft
    64-bit
  • Size of a pasted area

    The size on the sheet of a copied area pasted as a picture: the same size on paper, or the same real size when both sheets have a scale.

    k = mmPerPx ÷ mmPerPt (both scaled), else ptPerPx; w = px_w × k; h = px_h × k

    Sheet scale, typed lengths and measured values markupcraft.js
    • MarkupCraft
    64-bit
  • Arc through three points

    The center, radius, start angle and signed sweep of the arc from the first point through the second to the third.

    d = 2·(aₓ(m_y − b_y) + mₓ(b_y − a_y) + bₓ(a_y − m_y)); cₓ = Σ (x² + y²)·Δy ÷ d; r = hypot(a − c)

    Arc through three points and angle measurement arcs.js
    • MarkupCraft
    64-bit
  • Arc as Bézier pieces

    The arc as cubic Bézier segments of at most 90° each, for drawing and for the saved appearance.

    n = ⌈|sweep| ÷ (π ÷ 2) − 1e-9⌉; k = (4 ÷ 3)·tan(step ÷ 4)

    Arc through three points and angle measurement arcs.js
    • MarkupCraft
    64-bit
  • Arc length

    The length of an arc markup in points.

    length = r × |sweep|

    Arc through three points and angle measurement arcs.js
    • MarkupCraft
    64-bit
  • Angle between two legs

    The angle at a vertex between the directions to two other points, from 0° to 180°.

    θ = acos((u·w) ÷ (|u|·|w|)) × 180 ÷ π

    Arc through three points and angle measurement arcs.js
    • MarkupCraft
    64-bit
  • Angle as text

    Writes the angle with a degree sign.

    round(deg × 10ᵖ) ÷ 10ᵖ, p = 1 by default

    Arc through three points and angle measurement arcs.js
    • MarkupCraft
    64-bit
  • Snap to 45°

    Moves a point onto the nearest 45° direction from the point before it, keeping its distance.

    a = round(atan2(dy, dx) ÷ (π ÷ 4)) × (π ÷ 4); p = from + (cos a, sin a) × hypot(dx, dy)

    Markup geometry while drawing and editing geom.js
    • MarkupCraft
    64-bit
  • Square from a corner

    Makes the box from a fixed corner to the pointer square.

    s = max(|dx|, |dy|); p = a + (sign dx, sign dy) × s

    Markup geometry while drawing and editing geom.js
    • MarkupCraft
    64-bit
  • Resize by a grip

    The new box or points when a grip of a markup is dragged.

    box: dragged edges = pointer; stroke: x′ = x₀ + (x − box x₀) ÷ box width × new width

    Markup geometry while drawing and editing geom.js
    • MarkupCraft
    64-bit
  • Move a markup

    Shifts a markup's points, box and cut-outs by a distance.

    x′ = x + dx; y′ = y + dy

    Markup geometry while drawing and editing geom.js
    • MarkupCraft
    64-bit
  • Simplify a freehand stroke

    Drops the points of a pen or highlighter stroke that lie within a tolerance of the line through their neighbors.

    d = |dy·pₓ − dx·p_y + bₓ·a_y − b_y·aₓ| ÷ L

    Markup geometry while drawing and editing geom.js
    • MarkupCraft
    64-bit
  • Inverse of a transform

    The inverse of a 2-D affine transform.

    det = a·d − b·c; inverse = adjugate ÷ det

    Markup geometry while drawing and editing geom.js
    • MarkupCraft
    64-bit
  • Line-up through two pairs of points

    The move, turn and uniform scale that carries two picked points on one sheet onto two picked points on another.

    s = |b| ÷ |a|; θ = atan2(b) − atan2(a); M = [s·cos θ, s·sin θ, −s·sin θ, s·cos θ, e, f]

    Markup geometry while drawing and editing geom.js
    • MarkupCraft
    64-bit
  • Next point from a typed length and angle

    Places the next point of a line or outline at a typed real length, along a typed angle or toward the pointer.

    len = mm ÷ mmPerPt; a = (deg + page turn) × π ÷ 180; p = from + (cos a, sin a) × len

    Markup geometry while drawing and editing sketch.js
    • MarkupCraft
    64-bit
  • Cleaned pen stroke to a markup

    Turns what the stroke cleaner recognized (line, circle, arc, outline) into the points or box of a line, ellipse, arc, rectangle, polyline or polygon markup.

    circle → box (c − r, c + r); arc → points at a₀, a₀ + sweep ÷ 2, a₁ on the circle

    Markup geometry while drawing and editing pen-clean.js
    • MarkupCraft
    64-bit
  • Finished freehand stroke

    What is stored when a pen or highlighter stroke is finished.

    tolerance = 0.6 ÷ zoom (points)

    Markup geometry while drawing and editing markupcraft.js
    • MarkupCraft
    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.