AltoDocs

Calculation verification

Can you trust the numbers? Here is how we check them.

MathCanvas is a calculation tool, so a wrong number is the worst thing it can show. Before every release we check it against official worked examples, the definitions of units and thousands of formulas. You can run every check yourself, here in your browser.

Last release check: all 3,355 checks passed on calculation engine 3, 2026-10-30.

What we promise

Three promises

  1. We calculate what you wrote, or we say we can’t.

    If a formula could be read in two ways, MathCanvas gives no answer. It marks the formula with a red border and explains why, instead of guessing.

  2. Every answer shows its working.

    Open any result to see the formula with your numbers filled in, so you can check it by hand. The PDF can print the working too.

  3. Nothing ships unless every check passes.

    The checks on this page run before every release of MathCanvas and the AltoDocs API. One failure stops the release.

An example

When a formula could mean two things, MathCanvas does not guess

A slash is the usual culprit. It is fine when only a unit follows it, and unclear when a number does.

Calculated
12kN/m
One meaning. 12 kilonewtons per metre: only a unit follows the slash.
No answer
5kN/2m
Two meanings. 5 kN divided by 2 m is 2.5 kN/m, a load. 5 kN divided by 2, times a metre, is 2.5 kN·m, a moment. MathCanvas shows a red border and asks you to write it clearly.
Calculated
2m5kN​= 2.5 kN/m
Written clearly. As a fraction it has one meaning, so MathCanvas calculates it.

How we check

Every check compares MathCanvas with an answer from somewhere else

Official worked examples

106 answers printed in 3 European Commission design handbooks (steel, concrete and fire) and in NIST’s certified statistics. MathCanvas must reproduce each one.

Unit definitions

104 unit conversions, including every unit you can pick in MathCanvas, compared with their official definitions.

A second calculator

A separate program, written in Python and sharing no code with MathCanvas, recomputes every reference answer. Both must agree.

Every way of writing it

14 everyday engineering formulas, each written in all the ways engineers write them (31 in total), must give the same answer.

Thousands of random formulas

3,000 formulas generated by computer and compared with their known answers, to catch mistakes no one thought to test.

Our own worksheets

32 worksheets that ship with AltoDocs (356 results) are recalculated on every release. If a number changes unexpectedly, the release stops.

Run every check yourself

The button loads the same calculation engine MathCanvas uses and runs every check below in your browser. Each box turns green as its checks pass, with a real result from your run. Nothing is sent to us.

  • Official worked examples

    Not run yet

    Answers printed in European Commission design handbooks and NIST’s certified data.

    See all 106 →
  • Unit definitions

    Not run yet

    Every unit you can pick in MathCanvas, against its official definition.

    See all 104 →
  • Functions

    Not run yet

    Every function in MathCanvas, from √ and sin to max and ln, against its exact value.

    See all 48 →
  • Same formula, every way of writing it

    Not run yet

    Everyday engineering formulas, each written in all the ways engineers write them.

    See all 31 →
  • Refused when unclear

    Not run yet

    Formulas with two possible meanings must get no answer, never a guess.

    See all 11 →
  • Calculated as drawn

    Not run yet

    The structure you see on screen decides the value.

    See all 10 →
  • Displayed results

    Not run yet

    Rounding and units on screen show the true result.

    See all 31 →
  • Working gives the result

    Not run yet

    Each result’s working, with the numbers filled in, must give the result again.

    See all 14 →
  • Random formulas

    Not run yet

    Formulas built by the computer, to catch mistakes no one thought to test.

    See all 3,000 →

Two more checks run before every release but not in your browser: the second calculator in Python, and the 32 worksheets that ship with AltoDocs.

Where we are

The road to independent review

No software is trusted on its own word. We work through these steps in order, and an independent reviewer has the last word.

  1. Done

    Read every formula correctly

    One meaning or no answer. Thousands of checks run before every release.

  2. Done

    Never break what works

    Every worksheet we ship is recalculated on every release, each release’s report is archived, and PDFs can print the working.

  3. Done

    More proof from outside

    Published answers from four official sources, every unit and function checked, and the tests themselves tested with planted mistakes.

  4. We are here

    Ready for an independent reviewer

    The reviewer pack and our quality statement are written. Next, an engineer outside the project tries the review.

  5. Next

    Independent review

    An independent engineer or university reviews one engine version. We publish their findings and our answers.

Limits

What this does not cover

  • Your engineering judgement. MathCanvas calculates the formula you write. Whether the formula, the loads or the code clause are right for your design is the engineer’s decision.
  • Other tools. Python cells, spreadsheets and beam analysis run in their own engines and are not part of these checks yet.
  • A certificate. A checked calculation is not a certified design. No independent review has taken place yet.

Found a number that looks wrong?

Send us the formula, the inputs and the value you expected. A confirmed error is fixed and added to these checks for good. Reviewers can ask for the reviewer pack here too.

contact@altodocs.io

For engineers and reviewers

The details

Every check above, case by case: the formula, where its answer comes from, and its result once you run the checks.

How MathCanvas calculates
  1. You write the formula.

    The MathLive editor stores what you see as LaTeX, so the stored formula has the same structure as the one on screen.

  2. MathCanvas reads it into one tree.

    Fractions, powers, units and names become a single expression tree, written out with every bracket explicit: \frac{1}{8}q\cdot L^{2} becomes ((1 / 8) * q) * (L ^ 2). Notation with a second reading is refused here.

  3. mathjs computes it.

    The open-source mathjs library evaluates the tree with 64-significant-digit decimal arithmetic and its unit system, so 0.1 + 0.2 is exactly 0.3 and N/mm² converts to MPa.

  4. One engine everywhere.

    MathCanvas, the AltoDocs API and the tools AI assistants use evaluate through the same engine, so a worksheet gives the same answer wherever it is calculated.

Each check states how independent its reference is: recomputed outside the engine (a second implementation), printed by a third party (worked examples), or fixed by definition (units). An independent review of the method is the remaining step.

Official worked examples106

Each row is evaluated from the inputs as printed. Printed results are rounded, so a row passes when the engine’s value rounds to the printed one. Every value was also recomputed in Python. Where a source carries a rounded intermediate value into a later step, the rounded value is used, as printed.

Source: M. Veljkovic et al. (eds.), Eurocodes: Background & Applications. Design of Steel Buildings. Worked examples. JRC Science and Policy Report EUR 27346 EN, Publications Office of the European Union, 2015. ISBN 978-92-79-49573-1, doi:10.2788/605700.

QuantityFormulaWhereEngine inputPrintedEngine
N_c,RdA·f_y/γ_M0§1.3.3.2, Example 3: HEB 340 column, S 355 (L. Simões da Silva, R. Simões), PDF p. 63\frac{170.9\operatorname{cm}^{2}\cdot 355\operatorname{MPa}}{1.00}6067,0 kNNot run
λ₁π·√(E/f_y)§1.3.3.2, Example 3: HEB 340 column, S 355 (L. Simões da Silva, R. Simões), PDF p. 63\operatorname{\pi}\cdot\sqrt{\frac{210\operatorname{GPa}}{355\operatorname{MPa}}}76,41Not run
λ_zL_Ez/i_z§1.3.3.2, Example 3: HEB 340 column, S 355 (L. Simões da Silva, R. Simões), PDF p. 63\frac{4.335\operatorname{m}}{7.53\operatorname{cm}}57,57Not run
λ̄_zλ_z/λ₁§1.3.3.2, Example 3: HEB 340 column, S 355 (L. Simões da Silva, R. Simões), PDF p. 63\frac{57.57}{76.41}0,75Not run
Φ_z0.5·[1 + α(λ̄_z − 0.2) + λ̄_z²]§1.3.3.2, Example 3: HEB 340 column, S 355 (L. Simões da Silva, R. Simões), PDF p. 630.5\cdot\left(1+0.49\cdot\left(0.75-0.2\right)+0.75^{2}\right)0,92Not run
χ_z1/(Φ_z + √(Φ_z² − λ̄_z²))§1.3.3.2, Example 3: HEB 340 column, S 355 (L. Simões da Silva, R. Simões), PDF p. 63\frac{1}{0.92+\sqrt{0.92^{2}-0.75^{2}}}0,69Not run
N_b,Rdχ·A·f_y/γ_M1§1.3.3.2, Example 3: HEB 340 column, S 355 (L. Simões da Silva, R. Simões), PDF p. 63\frac{0.69\cdot 170.9\operatorname{cm}^{2}\cdot 355\operatorname{MPa}}{1.00}4186,2 kNNot run
M_c,RdW_pl,y·f_y/γ_M0§1.3.4.2: IPE 400 beam, S 355 (L. Simões da Silva, R. Simões), PDF p. 74\frac{1307\operatorname{cm}^{3}\cdot 355\operatorname{MPa}}{1.00}464,0 kNmNot run
V_pl,RdA_v·f_y/(√3·γ_M0)§1.3.4.2: IPE 400 beam, S 355 (L. Simões da Silva, R. Simões), PDF p. 74\frac{42.69\operatorname{cm}^{2}\cdot 355\operatorname{MPa}}{\sqrt{3}\cdot 1.00}875,0 kNNot run
λ̄_LT√(W_y·f_y/M_cr)§1.3.4.2: IPE 400 beam, S 355 (L. Simões da Silva, R. Simões), PDF p. 74\sqrt{\frac{1307\operatorname{cm}^{3}\cdot 355\operatorname{MPa}}{164.7\operatorname{kN}\cdot\operatorname{m}}}1,68Not run
Φ_LT0.5·[1 + α_LT(λ̄_LT − 0.2) + λ̄_LT²]§1.3.4.2: IPE 400 beam, S 355 (L. Simões da Silva, R. Simões), PDF p. 740.5\cdot\left(1+0.34\cdot\left(1.68-0.2\right)+1.68^{2}\right)2,16Not run
χ_LT1/(Φ_LT + √(Φ_LT² − λ̄_LT²))§1.3.4.2: IPE 400 beam, S 355 (L. Simões da Silva, R. Simões), PDF p. 74\frac{1}{2.16+\sqrt{2.16^{2}-1.68^{2}}}0,28Not run
M_b,Rdχ_LT·W_pl,y·f_y/γ_M1§1.3.4.2: IPE 400 beam, S 355 (L. Simões da Silva, R. Simões), PDF p. 74\frac{0.28\cdot 1307\operatorname{cm}^{3}\cdot 355\operatorname{MPa}}{1.00}129,9 kNmNot run
V_pl,Rd (beam web)A_v·f_y/(√3·γ_M0)§2.2.7: header plate connection (F. Wald), PDF p. 120\frac{6.2\operatorname{mm}\cdot 130\operatorname{mm}\cdot 235\operatorname{MPa}}{\sqrt{3}\cdot 1.00}109,4 kNNot run
F_v,Rd (M16, 4.6)α_v·A_s·f_ub/γ_M2§2.2.7: header plate connection (F. Wald), PDF p. 120\frac{0.6\cdot 157\operatorname{mm}^{2}\cdot 400\operatorname{MPa}}{1.25}30,1 kNNot run
F_w,Rd (fillet welds)2·a·L·f_u/(√3·β_w·γ_M2)§2.2.7: header plate connection (F. Wald), PDF p. 121\frac{2\cdot 3\operatorname{mm}\cdot 130\operatorname{mm}\cdot 360\operatorname{MPa}}{\sqrt{3}\cdot 0.8\cdot 1.25}162,1 kNNot run
F_v,Rd (M20)α_v·A_s·f_ub/γ_M2§2.2.8: fin plate connection (F. Wald), PDF p. 122\frac{0.6\cdot 245\operatorname{mm}^{2}\cdot 500\operatorname{MPa}}{1.25}58,8 kNNot run
F_b,Rd (beam web)k₁·α_b·d·t·f_u/γ_M2§2.2.8: fin plate connection (F. Wald), PDF p. 122\frac{2.5\cdot 0.659\cdot 20\operatorname{mm}\cdot 5.6\operatorname{mm}\cdot 360\operatorname{MPa}}{1.25}53,1 kNNot run
V_eff,2,Rd (fin plate)0.5·A_nt·f_u/γ_M2 + A_nv·f_y/(√3·γ_M0)§2.2.8: fin plate connection (F. Wald), PDF p. 124\frac{0.5\cdot 290\operatorname{mm}^{2}\cdot 360\operatorname{MPa}}{1.25}+\frac{670\operatorname{mm}^{2}\cdot 235\operatorname{MPa}}{\sqrt{3}\cdot 1.00}132,7 kNNot run
V_pl,Rd (fin plate)A_v·f_y/(√3·γ_M0)§2.2.8: fin plate connection (F. Wald), PDF p. 124\frac{10\operatorname{mm}\cdot 140\operatorname{mm}\cdot 235\operatorname{MPa}}{\sqrt{3}\cdot 1.00}189,9 kNNot run
V_eff,2,Rd (beam web)0.5·A_nt·f_u/γ_M2 + A_nv·f_y/(√3·γ_M0)§2.2.8: fin plate connection (F. Wald), PDF p. 124\frac{0.5\cdot 162.4\operatorname{mm}^{2}\cdot 360\operatorname{MPa}}{1.25}+\frac{515.2\operatorname{mm}^{2}\cdot 235\operatorname{MPa}}{\sqrt{3}\cdot 1.00}93,3 kNNot run
M_el,Rd (fin plate)W_el·f_y/γ_M0, W_el = t·h²/6§2.2.8: fin plate connection (F. Wald), PDF p. 124\frac{\frac{10\operatorname{mm}\cdot\left(140\operatorname{mm}\right)^{2}}{6}\cdot 235\operatorname{MPa}}{1.00}7,7 kNmNot run

Source: F. Biasioli, M. Poljanšek, B. Nikolova, S. Dimova, A. Pinto (eds.), Eurocode 2: Background & Applications. Design of Concrete Buildings. Worked examples. JRC Scientific and Policy Report EUR 26566 EN, Publications Office of the European Union, 2014. ISBN 978-92-79-36548-5, doi:10.2788/35386.

QuantityFormulaWhereEngine inputPrintedEngine
b_eff,1 (mid-span)0.2·b₁ + 0.1·(0.85·l)§3.2.1.1: effective width of the T-beam in axis 2 (J. Walraven, S. Gmainer), PDF p. 660.2\cdot 2875\operatorname{mm}+0.1\cdot\left(0.85\cdot 7125\operatorname{mm}\right)1181 mmNot run
b_eff (mid-span)2·b_eff,1 + b_w§3.2.1.1: effective width of the T-beam in axis 2 (J. Walraven, S. Gmainer), PDF p. 662\cdot\left(0.2\cdot 2875\operatorname{mm}+0.1\cdot 0.85\cdot 7125\operatorname{mm}\right)+250\operatorname{mm}2611 mmNot run
b_eff,1 (support)0.2·b₁ + 0.1·(0.30·l)§3.2.1.1: effective width of the T-beam in axis 2 (J. Walraven, S. Gmainer), PDF p. 660.2\cdot 2875\operatorname{mm}+0.1\cdot\left(0.30\cdot 7125\operatorname{mm}\right)789 mmNot run
b_eff (support)2·b_eff,1 + b_w§3.2.1.1: effective width of the T-beam in axis 2 (J. Walraven, S. Gmainer), PDF p. 662\cdot 788.8\operatorname{mm}+250\operatorname{mm}1828 mmNot run
K (mid-span)M_Ed/(b·d²·f_cd)§3.2.1.3: bending reinforcement of the T-beam (J. Walraven, S. Gmainer), PDF p. 70\frac{89.3\operatorname{kN}\cdot\operatorname{m}}{2611.2\operatorname{mm}\cdot\left(372\operatorname{mm}\right)^{2}\cdot\frac{25\operatorname{MPa}}{1.5}}0,0148Not run
z/d (mid-span)0.5·(1 + √(1 − 2K))§3.2.1.3: bending reinforcement of the T-beam (J. Walraven, S. Gmainer), PDF p. 700.5\cdot\left(1+\sqrt{1-2\cdot 0.0148}\right)0,9925Not run
A_sl (mid-span)M_Ed/(f_yd·z)§3.2.1.3: bending reinforcement of the T-beam (J. Walraven, S. Gmainer), PDF p. 70\frac{89.3\operatorname{kN}\cdot\operatorname{m}}{435\operatorname{MPa}\cdot 372\operatorname{mm}\cdot 0.9925}556 mm²Not run
K (support)M_Ed/(b·d²·f_cd)§3.2.1.3: bending reinforcement of the T-beam (J. Walraven, S. Gmainer), PDF p. 70\frac{132.9\operatorname{kN}\cdot\operatorname{m}}{250\operatorname{mm}\cdot\left(372\operatorname{mm}\right)^{2}\cdot\frac{25\operatorname{MPa}}{1.5}}0,230Not run
z/d (support)0.5·(1 + √(1 − 2K))§3.2.1.3: bending reinforcement of the T-beam (J. Walraven, S. Gmainer), PDF p. 700.5\cdot\left(1+\sqrt{1-2\cdot 0.230}\right)0,867Not run
A_sl (support)M_Ed/(f_yd·z)§3.2.1.3: bending reinforcement of the T-beam (J. Walraven, S. Gmainer), PDF p. 70\frac{132.9\operatorname{kN}\cdot\operatorname{m}}{435\operatorname{MPa}\cdot 372\operatorname{mm}\cdot 0.867}947 mm²Not run
A_s (4ϕ14)4·πϕ²/4§3.2.1.3: bending reinforcement of the T-beam (J. Walraven, S. Gmainer), PDF p. 704\cdot\frac{\operatorname{\pi}\cdot\left(14\operatorname{mm}\right)^{2}}{4}616 mm²Not run
A_s (9ϕ12)9·πϕ²/4§3.2.1.3: bending reinforcement of the T-beam (J. Walraven, S. Gmainer), PDF p. 709\cdot\frac{\operatorname{\pi}\cdot\left(12\operatorname{mm}\right)^{2}}{4}1018 mm²Not run
V_Ed,redV_Ed·(a − d)/a§3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 71129.9\operatorname{kN}\cdot\frac{3.36\operatorname{m}-0.372\operatorname{m}}{3.36\operatorname{m}}115,52 kNNot run
k1 + √(200/d)§3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 711+\sqrt{\frac{200}{372}}1,73Not run
ρ_lA_sl/(b_w·d)§3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 71\frac{565\operatorname{mm}^{2}}{250\operatorname{mm}\cdot 372\operatorname{mm}}0,0061Not run
V_Rd,cC_Rd,c·k·(100·ρ_l·f_ck)^(1/3)·b_w·d§3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 710.12\cdot\left(1+\sqrt{\frac{200}{372}}\right)\cdot\left(100\cdot\frac{565}{250\cdot 372}\cdot 25\right)^{\frac{1}{3}}\cdot\operatorname{MPa}\cdot 250\operatorname{mm}\cdot 372\operatorname{mm}47,90 kNNot run
A_sw/sV_Ed/(z·f_ywd·cot θ)§3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 72\frac{115.52\operatorname{kN}}{0.9\cdot 0.372\operatorname{m}\cdot 435\operatorname{MPa}\cdot 2.5}317 mm²/mNot run
a_sw,min0.08·√f_ck/f_yk·b_w§3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 720.08\cdot\frac{\sqrt{25}}{500}\cdot 0.25\operatorname{m}200 mm²Not run
ν0.6·(1 − f_ck/250)§3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 720.6\cdot\left(1-\frac{25}{250}\right)0,54Not run
V_Rd,maxb_w·z·ν·f_cd/(cot θ + tan θ)§3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 720.25\operatorname{m}\cdot 0.9\cdot 0.372\operatorname{m}\cdot 0.54\cdot\frac{25\operatorname{MPa}}{1.5}\cdot\frac{1}{2.5+0.4}259,8 kNNot run
f_ctdα_ct·f_ctk,0.05/γ_c§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 74\frac{1.0\cdot 1.8\operatorname{MPa}}{1.5}1,2 N/mm²Not run
ν_Ed,A½(b_eff − b_w)/b_eff · V_Ed/(z·h_f)§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 74\frac{\frac{1}{2}\cdot\left(2611.2-250\right)}{2611.2}\cdot\frac{115520\operatorname{N}}{0.9\cdot 372\operatorname{mm}\cdot 180\operatorname{mm}}0,87 N/mm²Not run
ν_Ed,C½(b_eff − b_w)/b_eff · V_Ed/(z·h_f)§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 74\frac{\frac{1}{2}\cdot\left(2611.2-250\right)}{2611.2}\cdot\frac{89830\operatorname{N}}{0.9\cdot 372\operatorname{mm}\cdot 180\operatorname{mm}}0,67 N/mm²Not run
ν_Ed,B,left½(b_eff − b_w)/b_eff · V_Ed/(z·h_f)§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 75\frac{\frac{1}{2}\cdot\left(1827.6-250\right)}{1827.6}\cdot\frac{101830\operatorname{N}}{0.9\cdot 372\operatorname{mm}\cdot 180\operatorname{mm}}0,73 N/mm²Not run
ν_Ed,B,right½(b_eff − b_w)/b_eff · V_Ed/(z·h_f)§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 75\frac{\frac{1}{2}\cdot\left(1827.6-250\right)}{1827.6}\cdot\frac{131410\operatorname{N}}{0.9\cdot 372\operatorname{mm}\cdot 180\operatorname{mm}}0,94 N/mm²Not run
A_st/s (support A)½(b_eff − b_w)/b_eff · V_Ed/(z·f_yd·cot θ_f)§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 75\frac{\frac{1}{2}\cdot\left(2611.2-250\right)}{2611.2}\cdot\frac{115520\operatorname{N}}{0.9\cdot 372\operatorname{mm}\cdot 435\operatorname{MPa}}\cdot\frac{1}{2.0}0,18 mm²/mmNot run
A_st/s (support C)½(b_eff − b_w)/b_eff · V_Ed/(z·f_yd·cot θ_f)§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 75\frac{\frac{1}{2}\cdot\left(2611.2-250\right)}{2611.2}\cdot\frac{89830\operatorname{N}}{0.9\cdot 372\operatorname{mm}\cdot 435\operatorname{MPa}}\cdot\frac{1}{2.0}0,14 mm²/mmNot run
A_st/s (support B, left)½(b_eff − b_w)/b_eff · V_Ed/(z·f_yd·cot θ_f)§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 75\frac{\frac{1}{2}\cdot\left(1827.6-250\right)}{1827.6}\cdot\frac{101830\operatorname{N}}{0.9\cdot 372\operatorname{mm}\cdot 435\operatorname{MPa}}\cdot\frac{1}{2.0}0,15 mm²/mmNot run
A_st/s (support B, right)½(b_eff − b_w)/b_eff · V_Ed/(z·f_yd·cot θ_f)§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 76\frac{\frac{1}{2}\cdot\left(1827.6-250\right)}{1827.6}\cdot\frac{131410\operatorname{N}}{0.9\cdot 372\operatorname{mm}\cdot 435\operatorname{MPa}}\cdot\frac{1}{2.0}0,19 mm²/mmNot run
ϕ8/250(πϕ²/4)/s§3.2.1.4: shear between web and flanges of the T-beam (J. Walraven, S. Gmainer), PDF p. 75\frac{\operatorname{\pi}\cdot\left(8\operatorname{mm}\right)^{2}}{4\cdot 250\operatorname{mm}}0,20 mm²/mmNot run
G_Ed1.3·(G₁ + G₂)§3.2.1.5: design of slabs supported by beams (J. Walraven, S. Gmainer), PDF p. 761.3\cdot\left(4.5+3.0\right)\cdot\frac{\operatorname{kN}}{\operatorname{m}^{2}}9,75 kN/m²Not run
L_Ed1.3·(G₁ + G₂) + 1.5·Q§3.2.1.5: design of slabs supported by beams (J. Walraven, S. Gmainer), PDF p. 761.3\cdot\left(4.5\frac{\operatorname{kN}}{\operatorname{m}^{2}}+3.0\frac{\operatorname{kN}}{\operatorname{m}^{2}}\right)+1.5\cdot 2.0\frac{\operatorname{kN}}{\operatorname{m}^{2}}12,75 kN/m²Not run
d_yh − c − ϕ/2§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 83210\operatorname{mm}-30\operatorname{mm}-\frac{16\operatorname{mm}}{2}172 mmNot run
d_zh − c − ϕ − ϕ/2§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 83210\operatorname{mm}-30\operatorname{mm}-16\operatorname{mm}-\frac{16\operatorname{mm}}{2}156 mmNot run
ν_Rd,max0.4·ν·f_cd§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 840.4\cdot 0.54\cdot\frac{25\operatorname{MPa}}{1.5}3,6 N/mm²Not run
ν_Ed (perimeter u₀)β·V_Ed/(u₀·d)§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 84\frac{1.15\cdot 705\operatorname{kN}}{4\cdot 500\operatorname{mm}\cdot 164\operatorname{mm}}2,47 N/mm²Not run
u₁4·c + 2π·2d§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 844\cdot 500\operatorname{mm}+2\cdot\operatorname{\pi}\cdot 2\cdot 164\operatorname{mm}4061 mmNot run
ν_Ed (perimeter u₁)β·V_Ed/(u₁·d)§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 84\frac{1.15\cdot 705\operatorname{kN}}{4061\operatorname{mm}\cdot 164\operatorname{mm}}1,22 N/mm²Not run
k (punching)1 + √(200/d)§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 851+\sqrt{\frac{200}{164}}2,10Not run
ν_Rd,cC_Rd,c·k·(100·ρ_l·f_ck)^(1/3)§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 850.12\cdot 2.0\cdot\left(100\cdot 0.0083\cdot 25\right)^{\frac{1}{3}}\cdot\operatorname{MPa}0,66 N/mm²Not run
ν_min0.035·k^(3/2)·f_ck^(1/2)§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 850.035\cdot 2.0^{\frac{3}{2}}\cdot 25^{\frac{1}{2}}\cdot\operatorname{MPa}0,49 N/mm²Not run
A_sw (per perimeter)(ν_Ed − 0.75·ν_Rd,c)·u₁·s_r/(1.5·f_ywd,ef)§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 86\frac{\left(1.22-0.75\cdot 0.66\right)\operatorname{MPa}\cdot 4060.88\operatorname{mm}\cdot 123\operatorname{mm}}{1.5\cdot 291\operatorname{MPa}}830 mm²Not run
u_outβ·V_Ed/(ν_Rd,c·d)§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 86\frac{1.15\cdot 705\operatorname{kN}}{0.66\operatorname{MPa}\cdot 164\operatorname{mm}}7490 mmNot run
a (outer perimeter)(u_out − 4h)/(2π)§3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 86\frac{7490.30\operatorname{mm}-4\cdot 500\operatorname{mm}}{2\cdot\operatorname{\pi}}874 mmNot run

Source: M. Poljanšek, B. Nikolova, L. Sousa, S. Dimova, A. Pinto (eds.), Eurocodes: Background & Applications. Structural Fire Design. Worked examples. JRC Science and Policy Report EUR 26698 EN, Publications Office of the European Union, 2014. ISBN 978-92-79-38671-8, doi:10.2788/85432.

QuantityFormulaWhereEngine inputPrintedEngine
P_fi,d,t1.25·q·L§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 1341.25\cdot 23.135\frac{\operatorname{kN}}{\operatorname{m}}\cdot 7\operatorname{m}202,4 kNNot run
M_fi,d,tq·l²/2 + P·l/2§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 134\frac{1.12\frac{\operatorname{kN}}{\operatorname{m}}\cdot\left(3\operatorname{m}\right)^{2}}{2}+\frac{202.4\operatorname{kN}\cdot 3\operatorname{m}}{2}308,6 kNmNot run
ε (fire)0.85·√(235/f_y)§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 1350.85\cdot\sqrt{\frac{235}{275}}0,786Not run
72ε72·0.85·√(235/f_y)§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 13572\cdot 0.85\cdot\sqrt{\frac{235}{275}}56,6Not run
9ε9·0.85·√(235/f_y)§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 1359\cdot 0.85\cdot\sqrt{\frac{235}{275}}7,07Not run
M_pl,RdW_pl,y·f_y/γ_M0§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 136\frac{2088.47\cdot 10^{3}\operatorname{mm}^{3}\cdot 275\operatorname{MPa}}{1.0}574,3 kNmNot run
V_pl,RdA_v·(f_y/√3)/γ_M0§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 136\frac{4896\operatorname{mm}^{2}\cdot\frac{275\operatorname{MPa}}{\sqrt{3}}}{1.0}777,3 kNNot run
μ₀,MM_fi,d,t·γ_M0/(M_Rd·γ_M,fi)§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 136\frac{308.6\operatorname{kN}\cdot\operatorname{m}\cdot 1.0}{574.3\operatorname{kN}\cdot\operatorname{m}\cdot 1.0}0,537Not run
μ₀,VV_fi,d,t·γ_M0/(V_Rd·γ_M,fi)§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 136\frac{104.5\operatorname{kN}\cdot 1.0}{777.3\operatorname{kN}\cdot 1.0}0,134Not run
μ₀,M,κ (unprotected)μ₀,M·κ₁·κ₂§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 1360.537\cdot 0.7\cdot 1.00,376Not run
μ₀ (unprotected)max(μ₀,M,κ; μ₀,V,κ)§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 137\max\left(0.376,0.134\right)0,376Not run
θ_cr (unprotected)39.19·ln[1/(0.9674·μ₀^3.833) − 1] + 482§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 13739.19\cdot\ln\left(\frac{1}{0.9674\cdot 0.376^{3.833}}-1\right)+482629 °CNot run
θ_cr (from k_y,θ)600 + (0.47 − μ₀)/(0.47 − 0.23)·100§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 137600+\frac{0.47-0.376}{0.47-0.23}\cdot 100639 °CNot run
k_sh0.9·(A_m/V)_b/(A_m/V)§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 1370.9\cdot\frac{70}{107}0,589Not run
k_sh·(A_m/V)·Δt/(c_a·ρ_a)k_sh/(c_a·ρ_a)·(A_m/V)·Δt§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 137\frac{0.589}{600\cdot 7850}\cdot 107\cdot 34,014·10⁻⁵Not run
μ₀,M,κ (protected)μ₀,M·κ₁·κ₂§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 138\frac{308.6}{574.3}\cdot 0.85\cdot 1.00,457Not run
θ_cr (protected)39.19·ln[1/(0.9674·μ₀^3.833) − 1] + 482§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 13939.19\cdot\ln\left(\frac{1}{0.9674\cdot 0.457^{3.833}}-1\right)+482599 °CNot run
ϕ (sprayed protection)c_p·ρ_p/(c_a·ρ_a)·d_p·A_p/V§2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 139\frac{1200\cdot 350}{600\cdot 7850}\cdot 10\cdot 10^{-3}\cdot 1070,0954Not run
P_fi,d,t (column)Σ(G_k + ψ₂Q_k): secondary + main beam§2.8.6.1, Example 4: central column in fire (B. Zhao), PDF p. 14014.105\cdot 7+202.4+1.12\cdot 6307,9 kNNot run
b_fi (secondary beam)b − 2·(β_n·t + 7)§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238120\operatorname{mm}-2\cdot\left(30\cdot 0.8\operatorname{mm}+7\operatorname{mm}\right)58 mmNot run
h_fi (secondary beam)h − (β_n·t + 7)§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238260\operatorname{mm}-\left(30\cdot 0.8\operatorname{mm}+7\operatorname{mm}\right)229 mmNot run
W_fi (secondary beam)b_fi·h_fi²/6§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238\frac{58\operatorname{mm}\cdot\left(229\operatorname{mm}\right)^{2}}{6}506,9·10³ mm³Not run
M_d,fi (secondary beam)q_d,fi·s·ℓ²/8§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238\frac{\left(0.17+0.09+1.32+0.06+0.28+1.0+0.3\cdot 2.0\right)\frac{\operatorname{kN}}{\operatorname{m}^{2}}\cdot 1.0\operatorname{m}\cdot\left(4.0\operatorname{m}\right)^{2}}{8}7,0 kNmNot run
σ_d,fi (secondary beam)M_d,fi/W_fi§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238\frac{\frac{\left(0.17+0.09+1.32+0.06+0.28+1.0+0.3\cdot 2.0\right)\frac{\operatorname{kN}}{\operatorname{m}^{2}}\cdot 1.0\operatorname{m}\cdot\left(4.0\operatorname{m}\right)^{2}}{8}}{\frac{58\operatorname{mm}\cdot\left(229\operatorname{mm}\right)^{2}}{6}}13,9 N/mm²Not run
b_fi (main beam)b − 2·(β_n·t + 7)§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238160\operatorname{mm}-2\cdot\left(30\cdot 0.7\operatorname{mm}+7\operatorname{mm}\right)104 mmNot run
h_fi (main beam)h − (β_n·t + 7)§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238735\operatorname{mm}-\left(30\cdot 0.7\operatorname{mm}+7\operatorname{mm}\right)707 mmNot run
W_fi (main beam)b_fi·h_fi²/6§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 239\frac{104\operatorname{mm}\cdot\left(707\operatorname{mm}\right)^{2}}{6}8664·10³ mm³Not run
M_d,fi (main beam)q_d,fi·s·ℓ²/8§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 239\frac{\left(0.17+0.17+0.09+1.32+0.06+0.28+1.0+0.3\cdot 2.0\right)\frac{\operatorname{kN}}{\operatorname{m}^{2}}\cdot 4.0\operatorname{m}\cdot\left(8.0\operatorname{m}\right)^{2}}{8}118,1 kNmNot run
σ_d,fi (main beam)M_d,fi/W_fi§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 239\frac{118.1\cdot 10^{6}\operatorname{N}\cdot\operatorname{mm}}{8664\cdot 10^{3}\operatorname{mm}^{3}}13,6 N/mm²Not run
A_fi (column)b_fi·h_fi§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 239\left(160\operatorname{mm}-2\cdot\left(30\cdot 0.8\operatorname{mm}+7\operatorname{mm}\right)\right)^{2}9604 mm²Not run
N_d,fi (column)q_d,fi·s·ℓ/2§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 240\frac{\left(0.17+0.17+0.09+1.32+0.06+0.28+1.0+0.3\cdot 2.0\right)\frac{\operatorname{kN}}{\operatorname{m}^{2}}\cdot 4.0\operatorname{m}\cdot 8.0\operatorname{m}}{2}59,0 kNNot run
σ_d,fi (column)N_d,fi/A_fi§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 240\frac{59.0\cdot 10^{3}\operatorname{N}}{9604\operatorname{mm}^{2}}6,1 N/mm²Not run
i_fi (column)√(I_fi/A_fi)§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 240\sqrt{\frac{\frac{98\operatorname{mm}\cdot\left(98\operatorname{mm}\right)^{3}}{12}}{98\operatorname{mm}\cdot 98\operatorname{mm}}}28,3 mmNot run
λ_fi (column)ℓ/i_fi§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 240\frac{3000}{28.3}106,0Not run
λ_rel,fi (column)λ_fi/π·√(f_c,0,k/E₀.₀₅), E₀.₀₅ = ⅔·E_mean§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 240\frac{106.0}{3.14}\cdot\sqrt{\frac{21}{\frac{2}{3}\cdot 11000}}1,8Not run
f_c,0,d,fi (column)k_fi·f_c,0,k·k_c,fi§6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 2411.25\cdot 21.0\cdot 0.277,1 N/mm²Not run

Source: NIST Statistical Reference Datasets, Univariate Summary Statistics: datasets NumAcc1 and Mavro with certified values. National Institute of Standards and Technology, Information Technology Laboratory.

QuantityFormulaWhereEngine inputPrintedEngine
Mean, NumAcc1mean of 3 eight-digit valuesNumAcc1 (constructed, 3 values): certified values, NumAcc1.dat lines 41–43\operatorname{mean}\left(10000001,10000003,10000002\right)10000002 (exact)Not run
Standard deviation, NumAcc1sample standard deviation (n − 1)NumAcc1 (constructed, 3 values): certified values, NumAcc1.dat lines 41–43\operatorname{std}\left(10000001,10000003,10000002\right)1 (exact)Not run
Mean, Mavromean of 50 measurementsMavro (filter transmittance, 50 values): certified values, Mavro.dat lines 41–43\operatorname{mean}\left(2.00180,2.00170,2.00180,2.00190,2.00180,2.00170,2.00150,2.00140,2.00150,2.00150,2.00170,2.00180,2.00180,2.00190,2.00190,2.00210,2.00200,2.00160,2.00140,2.00130,2.00130,2.00150,2.00150,2.00160,2.00150,2.00140,2.00130,2.00140,2.00150,2.00140,2.00150,2.00160,2.00150,2.00160,2.00190,2.00200,2.00200,2.00210,2.00220,2.00230,2.00240,2.00250,2.00270,2.00260,2.00260,2.00260,2.00270,2.00260,2.00250,2.00240\right)2.00185600000000Not run
Standard deviation, Mavrosample standard deviation (n − 1)Mavro (filter transmittance, 50 values): certified values, Mavro.dat lines 41–43\operatorname{std}\left(2.00180,2.00170,2.00180,2.00190,2.00180,2.00170,2.00150,2.00140,2.00150,2.00150,2.00170,2.00180,2.00180,2.00190,2.00190,2.00210,2.00200,2.00160,2.00140,2.00130,2.00130,2.00150,2.00150,2.00160,2.00150,2.00140,2.00130,2.00140,2.00150,2.00140,2.00150,2.00160,2.00150,2.00160,2.00190,2.00200,2.00200,2.00210,2.00220,2.00230,2.00240,2.00250,2.00270,2.00260,2.00260,2.00260,2.00270,2.00260,2.00250,2.00240\right)0.000429123454003053Not run
Same formula, every way of writing it31

14 formulas in 31 notations. Each worksheet first defines its inputs, then writes the same formula in every way engineers write it; every version must give the same answer, computed outside the engine. After a run, each formula also shows its working.

Simply supported beam, uniform load

Inputsq := 12\operatorname{\textcolor{blue}{kN}}/\operatorname{\textcolor{blue}{m}}L := 6\operatorname{\textcolor{blue}{m}}E := 210\operatorname{GPa}I := 8356\operatorname{cm}^{4}
M = qL²/8Beam statics

Written 5 ways; each must give 54 kN m.

  • \frac{q\cdot L^{2}}{8}Not run
  • \frac{1}{8}q\cdot L^{2}Not run
  • \frac{1}{8}\cdot q\cdot L^{2}Not run
  • 0.125\cdot q\cdot L^{2}Not run
  • q\cdot L^{2}/8Not run
V = qL/2Beam statics

Written 3 ways; each must give 36 kN.

  • \frac{q\cdot L}{2}Not run
  • \frac{q}{2}LNot run
  • q\cdot L/2Not run
δ = 5qL⁴/(384EI)Beam statics

Written 4 ways; each must give 11.54 mm.

  • \frac{5\cdot q\cdot L^{4}}{384\cdot E\cdot I}Not run
  • \frac{5}{384}\cdot\frac{q\cdot L^{4}}{E\cdot I}Not run
  • \frac{5}{384}\frac{q L^{4}}{E I}Not run
  • 5\cdot q\cdot L^{4}/\left(384\cdot E\cdot I\right)Not run

Steel bending resistance and utilisation

InputsW_{pl} := 628.4\operatorname{cm}^{3}f_{y} := 235\operatorname{\textcolor{blue}{MPa}}\gamma_{M0} := 1.0M_{Ed} := 54\operatorname{kN}\cdot \operatorname{m}
M_c,Rd = W_pl·f_y/γ_M0EN 1993-1-1, 6.2.5 (6.13)

Written 2 ways; each must give 147.674 kN m.

  • M_{c,Rd} := \frac{W_{pl}\cdot f_{y}}{\gamma_{M0}}Not run
  • W_{pl}\cdot f_{y}/\gamma_{M0}Not run
η = M_Ed/M_c,RdUtilisation

Written 2 ways; each must give 0.36567.

  • \frac{M_{Ed}}{M_{c,Rd}}Not run
  • M_{Ed}/M_{c,Rd}Not run

Euler critical load

InputsE := 210\operatorname{GPa}I := 8356\operatorname{cm}^{4}L_{cr} := 6\operatorname{m}
N_cr = π²EI/L_cr²Elastic buckling

Written 2 ways; each must give 4810.77 kN.

  • \frac{\operatorname{\pi}^{2}\cdot E\cdot I}{L_{cr}^{2}}Not run
  • \operatorname{\pi}^{2}\frac{E\cdot I}{L_{cr}^{2}}Not run

Concrete design strength and relative moment

Inputs\alpha_{cc} := 1.0f_{ck} := 30\operatorname{MPa}\gamma_{c} := 1.5M_{Ed} := 120\operatorname{kN}\cdot \operatorname{m}b := 300\operatorname{mm}d := 450\operatorname{mm}
f_cd = α_cc·f_ck/γ_cEN 1992-1-1, 3.1.6 (3.15)

Written 2 ways; each must give 20 MPa.

  • f_{cd} := \frac{\alpha_{cc}\cdot f_{ck}}{\gamma_{c}}Not run
  • \alpha_{cc}\frac{f_{ck}}{\gamma_{c}}Not run
μ = M_Ed/(b·d²·f_cd)Rectangular section design

Written 2 ways; each must give 0.0987654.

  • \frac{M_{Ed}}{b\cdot d^{2}\cdot f_{cd}}Not run
  • M_{Ed}/\left(b\cdot d^{2}\cdot f_{cd}\right)Not run

Bolt shear resistance, M20 8.8

Inputs\alpha_{v} := 0.6f_{ub} := 800\operatorname{MPa}A_{s} := 245\operatorname{mm}^{2}\gamma_{M2} := 1.25
F_v,Rd = α_v·f_ub·A_s/γ_M2EN 1993-1-8, Table 3.4

Written 2 ways; each must give 94.08 kN.

  • \frac{\alpha_{v}\cdot f_{ub}\cdot A_{s}}{\gamma_{M2}}Not run
  • \alpha_{v}\cdot f_{ub}\cdot\frac{A_{s}}{\gamma_{M2}}Not run

Load combination and self-weight

InputsG_{k} := 10\operatorname{\textcolor{blue}{kN}}/\operatorname{\textcolor{blue}{m}}Q_{k} := 5\operatorname{\textcolor{blue}{kN}}/\operatorname{\textcolor{blue}{m}}\rho_{c} := 25\operatorname{kN}/\operatorname{m}^{3}h := 0.2\operatorname{m}
E_d = 1.35·G_k + 1.5·Q_kEN 1990, (6.10)

Written 2 ways; each must give 21 kN/m.

  • 1.35\cdot G_{k}+1.5\cdot Q_{k}Not run
  • 1.35G_{k}+1.5Q_{k}Not run
g = ρ·hSelf-weight

Written one way; each must give 5 kN/m^2.

  • \rho_{c}\cdot hNot run

Roof snow load

Inputs\mu_{1} := 0.8C_{e} := 1.0C_{t} := 1.0s_{k} := 1.0\operatorname{kN}/\operatorname{m}^{2}
s = μ₁·C_e·C_t·s_kEN 1991-1-3, (5.1)

Written one way; each must give 0.8 kN/m^2.

  • \mu_{1}\cdot C_{e}\cdot C_{t}\cdot s_{k}Not run

Thermal elongation

Inputs\alpha_{T} := 12\cdot 10^{-6}\operatorname{K}^{-1}\Delta T := 30\operatorname{K}L_{0} := 10\operatorname{m}
ΔL = α·ΔT·LLinear thermal expansion

Written one way; each must give 3.6 mm.

  • \alpha_{T}\cdot\Delta T\cdot L_{0}Not run

Imperial beam, uniform load (US customary units)

Inputsw := 1.2\operatorname{kip}/\operatorname{ft}L_{s} := 20\operatorname{ft}
M = wL²/8Beam statics, US customary units

Written 2 ways; each must give 60 kip ft.

  • \frac{w\cdot L_{s}^{2}}{8}Not run
  • \frac{1}{8}w\cdot L_{s}^{2}Not run
Unit definitions104

“Defined” values are exact by definition and must match to 12 significant digits; “derived” values follow exactly from defined ones and must match to 9. The difference column shows the engine’s actual deviation. Source: A. Thompson and B. N. Taylor, Guide for the Use of the International System of Units (SI), NIST Special Publication 811, 2008 edition, Appendix B.

UnitDefinitionBasisExpectedEngineDifference
1 inInternational inch (1959)defined0.0254 mNot run—
1 ftInternational foot (1959)defined0.3048 mNot run—
1 ydInternational yard (1959)defined0.9144 mNot run—
1 miInternational miledefined1609.344 mNot run—
1 lbAvoirdupois pound (1959)defined0.45359237 kgNot run—
1 lbf1 lb × standard gravityderived4.44822161526 NNot run—
1 kip1000 lbfderived4.44822161526 kNNot run—
1 psi1 lbf/in²derived6894.75729317 PaNot run—
1 ksi1000 lbf/in²derived6.89475729317 MPaNot run—
1 psf1 lbf/ft²derived47.8802589803 PaNot run—
1 kip·ft1 kip × 1 ftderived1.35581794833 kN mNot run—
1 galUS liquid gallon (231 in³)defined3.785411784 LNot run—
1 gₙStandard acceleration of gravitydefined9.80665 m/s^2Not run—
1 kgf1 kg × standard gravitydefined9.80665 NNot run—
1 atmStandard atmospheredefined101325 PaNot run—
1 bar10⁵ Padefined100 kPaNot run—
1°π/180 raddefined0.0174532925199 radNot run—
1 h3600 sdefined3600 sNot run—
1 kWh3.6 × 10⁶ Jdefined3.6 MJNot run—
1 MPaSI prefixesdefined1 N/mm^2Not run—
1 tTonne (metric ton)defined1000 kgNot run—
1 tonRead as the metric tonne; the US short ton is shorttonconvention1000 kgNot run—
1 nmSI prefix nanodefined1e-9 mNot run—
1 umSI prefix microdefined0.000001 mNot run—
1 mmSI prefix millidefined0.001 mNot run—
1 cmSI prefix centidefined0.01 mNot run—
1 dmSI prefix decidefined0.1 mNot run—
1 mSI base unit of lengthdefined1000 mmNot run—
1 kmSI prefix kilodefined1000 mNot run—
1 inchInternational inch (1959)defined0.0254 mNot run—
1 footInternational foot (1959)defined0.3048 mNot run—
1 yardInternational yard (1959)defined0.9144 mNot run—
1 mileInternational miledefined1609.344 mNot run—
1 hectare10⁴ m²defined10000 m^2Not run—
1 sqinSquare inchderived0.00064516 m^2Not run—
1 sqftSquare footderived0.09290304 m^2Not run—
1 sqydSquare yardderived0.83612736 m^2Not run—
1 sqmiSquare milederived2589988.11034 m^2Not run—
1 acreInternational acre, 43 560 ft²derived4046.8564224 m^2Not run—
1 litre1 dm³defined0.001 m^3Not run—
1 mL1 cm³defined0.000001 m^3Not run—
1 cuinCubic inchderived0.000016387064 m^3Not run—
1 cuftCubic footderived0.028316846592 m^3Not run—
1 cuydCubic yardderived0.764554857984 m^3Not run—
1 gallonUS liquid gallon (231 in³)defined0.003785411784 m^3Not run—
1 mgSI prefix millidefined0.000001 kgNot run—
1 gram1/1000 kgdefined0.001 kgNot run—
1 kgSI base unit of massdefined1000 gramNot run—
1 ounceAvoirdupois ounce, lb/16defined0.028349523125 kgNot run—
1 poundAvoirdupois pound (1959)defined0.45359237 kgNot run—
1 shorttonUS short ton, 2000 lbdefined907.18474 kgNot run—
1 slug1 lbf·s²/ftderived14.5939029372 kgNot run—
1 sSI base unit of timedefined1000 msNot run—
1 minMinutedefined60 sNot run—
1 hrHourdefined3600 sNot run—
1 dayDay, 24 hdefined86400 sNot run—
1 weekWeek, 7 daysdefined604800 sNot run—
1 yearJulian year, 365.25 daysconvention31557600 sNot run—
1 N1 kg·m/s²defined1 kg m / s^2Not run—
1 kNSI prefix kilodefined1000 NNot run—
1 MNSI prefix megadefined1000000 NNot run—
1 Pa1 N/m²defined1 N / m^2Not run—
1 kPaSI prefix kilodefined1000 PaNot run—
1 GPaSI prefix gigadefined1000000000 PaNot run—
1 torr1/760 standard atmospheredefined133.322368421 PaNot run—
1 J1 N·mdefined1 N mNot run—
1 kJSI prefix kilodefined1000 JNot run—
1 MJSI prefix megadefined1000000 JNot run—
1 Wh1 W × 3600 sdefined3600 JNot run—
1 calThermochemical caloriedefined4.184 JNot run—
1 kcalThermochemical kilocaloriedefined4184 JNot run—
1 BTUInternational Table BTUdefined1055.05585262 JNot run—
1 W1 J/sdefined1 J / sNot run—
1 kWSI prefix kilodefined1000 WNot run—
1 MWSI prefix megadefined1000000 WNot run—
1 hpMechanical horsepower, 550 ft·lbf/sderived745.699871582 WNot run—
1 kelvinSI base unit of temperaturedefined1 KNot run—
1 celsius1 °C is 274.15 Kdefined274.15 KNot run—
1 fahrenheit1 °F is (1 + 459.67) × 5/9 Kdefined255.927777778 KNot run—
1 rankine5/9 Kdefined0.555555555556 KNot run—
1 rad180/π degreesdefined57.2957795131 degNot run—
1 gradπ/200 raddefined0.0157079632679 radNot run—
1 Hz1 per seconddefined1 1 / sNot run—
1 kHzSI prefix kilodefined1000 HzNot run—
1 MHzSI prefix megadefined1000000 HzNot run—
1 GHzSI prefix gigadefined1000000000 HzNot run—
1 rpmOne revolution per minutedefined0.0166666666667 HzNot run—
1 A1 C/sdefined1 C / sNot run—
1 mASI prefix millidefined0.001 ANot run—
1 V1 W/Adefined1 W / ANot run—
1 kVSI prefix kilodefined1000 VNot run—
1 ohm1 V/Adefined1 V / ANot run—
1 kohmSI prefix kilodefined1000 ohmNot run—
1 MohmSI prefix megadefined1000000 ohmNot run—
1 F1 C/Vdefined1 C / VNot run—
1 C1 A·sdefined1 A sNot run—
1 henry1 V·s/Adefined1 V s / ANot run—
1 T1 Wb/m²defined1 weber / m^2Not run—
1 weber1 V·sdefined1 V sNot run—
1 nmolSI prefix nanodefined1e-9 molNot run—
1 umolSI prefix microdefined0.000001 molNot run—
1 mmolSI prefix millidefined0.001 molNot run—
1 molSI base unit of amountdefined1000 mmolNot run—
1 kmolSI prefix kilodefined1000 molNot run—
Functions48

Every function MathCanvas offers, written as the canvas writes it, against its mathematical value. Angles in degrees carry the degree unit; without a unit, angles are in radians.

FunctionEngine inputExpectedEngine
√2\sqrt{2}1.41421Not run
√(16 m²)\sqrt{16\operatorname{\textcolor{blue}{m}}^{2}}4 mNot run
∛27\sqrt[3]{27}3Not run
⁴√16\sqrt[4]{16}2Not run
pow(2, 10)\operatorname{pow}\left(2,10\right)1024Not run
hypot(3, 4)\operatorname{hypot}\left(3,4\right)5Not run
sin(30°)\sin\left(30\operatorname{\textcolor{blue}{deg}}\right)0.5Not run
sin(1), radians\sin\left(1\right)0.841471Not run
cos(60°)\cos\left(60\operatorname{\textcolor{blue}{deg}}\right)0.5Not run
tan(45°)\tan\left(45\operatorname{\textcolor{blue}{deg}}\right)1Not run
cot(45°)\cot\left(45\operatorname{\textcolor{blue}{deg}}\right)1Not run
sec(60°)\sec\left(60\operatorname{\textcolor{blue}{deg}}\right)2Not run
csc(30°)\csc\left(30\operatorname{\textcolor{blue}{deg}}\right)2Not run
arcsin(0.5)\arcsin\left(0.5\right)0.523599Not run
arccos(0.5)\arccos\left(0.5\right)1.0472Not run
arctan(1)\arctan\left(1\right)0.785398Not run
asin(0.5)\operatorname{asin}\left(0.5\right)0.523599Not run
acos(0.5)\operatorname{acos}\left(0.5\right)1.0472Not run
atan(1)\operatorname{atan}\left(1\right)0.785398Not run
atan2(1, −1)\operatorname{atan2}\left(1,-1\right)2.35619Not run
sinh(1)\sinh\left(1\right)1.1752Not run
cosh(1)\cosh\left(1\right)1.54308Not run
tanh(1)\tanh\left(1\right)0.761594Not run
asinh(1)\operatorname{asinh}\left(1\right)0.881374Not run
acosh(2)\operatorname{acosh}\left(2\right)1.31696Not run
atanh(0.5)\operatorname{atanh}\left(0.5\right)0.549306Not run
log₂(8)\log_{2}\left(8\right)3Not run
log₁₀(1000)\log_{10}\left(1000\right)3Not run
log2(32)\operatorname{log2}\left(32\right)5Not run
ln(10)\ln\left(10\right)2.30259Not run
exp(1)\exp\left(1\right)2.71828Not run
|−3.5 kN|\left|-3.5\operatorname{\textcolor{blue}{kN}}\right|3.5 kNNot run
sign(−2)\operatorname{sign}\left(-2\right)-1Not run
floor(2.7)\operatorname{floor}\left(2.7\right)2Not run
ceil(2.1)\operatorname{ceil}\left(2.1\right)3Not run
round(2.5)\operatorname{round}\left(2.5\right)3Not run
round(3.14159, 2)\operatorname{round}\left(3.14159,2\right)3.14Not run
fix(−2.7)\operatorname{fix}\left(-2.7\right)-2Not run
max(3 kN, 2500 N)\max\left(3\operatorname{\textcolor{blue}{kN}},2500\operatorname{\textcolor{blue}{N}}\right)3 kNNot run
min(3, 7, 5)\min\left(3,7,5\right)3Not run
sum(1, 2, 3, 4)\operatorname{sum}\left(1,2,3,4\right)10Not run
prod(2, 3, 4)\operatorname{prod}\left(2,3,4\right)24Not run
mean(2, 4, 9)\operatorname{mean}\left(2,4,9\right)5Not run
median(3, 1, 4, 1, 5)\operatorname{median}\left(3,1,4,1,5\right)3Not run
std(2, 4, 4, 4, 5, 5, 7, 9)\operatorname{std}\left(2,4,4,4,5,5,7,9\right)2.13809Not run
mod(17, 5)\operatorname{mod}\left(17,5\right)2Not run
gcd(12, 18)\operatorname{gcd}\left(12,18\right)6Not run
lcm(4, 6)\operatorname{lcm}\left(4,6\right)12Not run
Displayed results30

What the canvas shows: rounding, number formats and the unit each kind of result is shown in. A result is rounded as written in decimal, so 2.675 shows as 2.68, and its display never depends on what was calculated before. Results keep full precision; only the display is rounded. With a = 1/3 shown as 0.33, 3·a is exactly 1.

RuleEngine inputShowsResult
Two decimals\frac{1}{3}0.33Not run
A half rounds away from zero0.1250.13Not run
Rounded as written, not as stored in binary2.6752.68Not run
Negative values round the same way-2.675-2.68Not run
Percentage0.28529\%Not run
Engineering notation1234512.35 \cdot 10^{3}Not run
A small value never shows as zero0.0000120.000012Not run
Zero shows as zero00.00Not run
A small area in m² keeps its digits1570\operatorname{\textcolor{blue}{mm}}^{2}0.00157 \operatorname{\textcolor{blue}{m}}^{2}Not run
Force in kN1500\operatorname{\textcolor{blue}{N}}1.50 \operatorname{\textcolor{blue}{kN}}Not run
Force: from 1000 N in kN1000\operatorname{\textcolor{blue}{N}}1.00 \operatorname{\textcolor{blue}{kN}}Not run
Force: below 1000 N in N999\operatorname{\textcolor{blue}{N}}999.00 \operatorname{\textcolor{blue}{N}}Not run
Moment: below 1000 N·m in N·m999\operatorname{\textcolor{blue}{N}}\cdot\operatorname{\textcolor{blue}{m}}999.00 \operatorname{\textcolor{blue}{N}} \cdot \operatorname{\textcolor{blue}{m}}Not run
Line load in kN/m\frac{5\operatorname{\textcolor{blue}{kN}}}{2\operatorname{\textcolor{blue}{m}}}2.50 \frac{\operatorname{\textcolor{blue}{kN}}}{\operatorname{\textcolor{blue}{m}}}Not run
Unit weight in kN/m³25\frac{\operatorname{\textcolor{blue}{kN}}}{\operatorname{\textcolor{blue}{m}}^{3}}25.00 \frac{\operatorname{\textcolor{blue}{kN}}}{\operatorname{\textcolor{blue}{m}}^{3}}Not run
Bending stiffness in kN·m²210\operatorname{\textcolor{blue}{GPa}}\cdot 8356\operatorname{\textcolor{blue}{cm}}^{4}17547.6 \operatorname{\textcolor{blue}{kN}} \cdot \operatorname{\textcolor{blue}{m}}^{2}Not run
Stress: from 1 MPa in MPa1000000\operatorname{\textcolor{blue}{Pa}}1.00 \operatorname{\textcolor{blue}{MPa}}Not run
Modulus: from 1 GPa in GPa1000000000\operatorname{\textcolor{blue}{Pa}}1.00 \operatorname{\textcolor{blue}{GPa}}Not run
Moment in kN·m5\operatorname{\textcolor{blue}{kN}}\cdot 2\operatorname{\textcolor{blue}{m}}10.00 \operatorname{\textcolor{blue}{kN}} \cdot \operatorname{\textcolor{blue}{m}}Not run
Stress in MPa235\frac{\operatorname{\textcolor{blue}{N}}}{\operatorname{\textcolor{blue}{mm}}^{2}}235.0 \operatorname{\textcolor{blue}{MPa}}Not run
Surface load in kN/m²2500\operatorname{\textcolor{blue}{Pa}}2.50 \frac{\operatorname{\textcolor{blue}{kN}}}{\operatorname{\textcolor{blue}{m}}^{2}}Not run
Imperial worksheet: force in kip1500\operatorname{\textcolor{blue}{lbf}}1.50 \operatorname{\textcolor{blue}{kip}}Not run
Imperial worksheet: from 1000 lbf in kip1000\operatorname{\textcolor{blue}{lbf}}1.00 \operatorname{\textcolor{blue}{kip}}Not run
Imperial worksheet: below 1000 lbf in lbf999\operatorname{\textcolor{blue}{lbf}}999.00 \operatorname{\textcolor{blue}{lbf}}Not run
Imperial worksheet: line load in kip/ft\frac{1200\operatorname{\textcolor{blue}{lbf}}}{\operatorname{\textcolor{blue}{foot}}}1.20 \frac{\operatorname{\textcolor{blue}{kip}}}{\operatorname{\textcolor{blue}{ft}}}Not run
A unit you choose is kept54\operatorname{\textcolor{blue}{kN}}\cdot\operatorname{\textcolor{blue}{m}}39.83 \operatorname{\textcolor{blue}{kip}} \cdot \operatorname{\textcolor{blue}{ft}}Not run
Temperature units take no prefix12\cdot 10^{-6}\frac{1}{\operatorname{\textcolor{blue}{K}}}0.000012 \operatorname{\textcolor{blue}{K}}^{-1}Not run
Mixed units add exactly1\operatorname{\textcolor{blue}{m}}+1\operatorname{\textcolor{blue}{foot}}1.305 \operatorname{\textcolor{blue}{m}}Not run
Lengths keep the unit they were written in3\operatorname{\textcolor{blue}{foot}}+2\operatorname{\textcolor{blue}{foot}}5.00 \operatorname{\textcolor{blue}{foot}}Not run
An area elsewhere does not change how m² is shown2.5\operatorname{\textcolor{blue}{m}}^{2}2.50 \operatorname{\textcolor{blue}{m}}^{2}Not run
Calculated as drawn10

The structure you see decides the value. With 5 definitions: q = 12 kN/m, L = 6 m, x = 4, a = 2 and b = 3.

On the pageEngine inputExpectedResult
⅛ q · L²\frac{1}{8}q\cdot L^{2}54 kN mNot run
(q/2) L\frac{q}{2}L36 kNNot run
(6/2) x\frac{6}{2}x12Not run
(a/b)²\frac{a}{b}^{2}0.444444Not run
−½ x-\frac{1}{2}x-2Not run
x ½x\frac{1}{2}2Not run
a ÷ (b/x)a/\frac{b}{x}2.66667Not run
sin(π/2)\sin\frac{\operatorname{\pi}}{2}1Not run
0.1 + 0.20.1+0.20.3Not run
5 N/mm²5\operatorname{N}/\operatorname{mm}^{2}5 MPaNot run
Refused when unclear11

Each of these gets a red border and a reason in the worksheet. Inline division with only one reading, such as 12 kN/m, a/b/c or a/b·c, still works and reads left to right.

WrittenWhy it is refusedWrite insteadResult
5 kN / 2 m5 kN ÷ (2 m), or (5 kN ÷ 2) · m?A fraction, or 5 kN / (2 m)Should be refused
1/2 mHalf a metre, or one over two metres?A fraction, or 1/(2 m)Should be refused
a/2ba ÷ (2b), or (a ÷ 2) · b?A fraction, or a/(2b)Should be refused
2 ½Two and a half, or two times a half?2 + ½ or 2 · ½Should be refused
5%x5 % of x, or 5 modulo x?5 % · xShould be refused
log(100)Base 10 or base e? Tools differ.log₁₀(100) or ln(100)Should be refused
x(a + b)A function x of a + b, or x times (a + b)?x · (a + b)Should be refused
3 × 4× also means the cross product.3 · 4Should be refused
6 ÷ 3÷ is written in some places for ratios and ranges.A fraction, 6/3Should be refused
± 3Two values in one result.One region per caseShould be refused
∓ 3Two values in one result.One region per caseShould be refused
Every result shows its working

Checking engineers verify a calculation line by line. MathCanvas shows each result the same way: the formula as the engine reads it, then the same formula with the values it used, then the result. Open the variable inspector on any finished region to see it; the PDF can print it as an appendix, and the API and AI tools return it with every result.

M_Ed = 1 / 8 * q * L ^ 2 = 1 / 8 * (12 kN / m) * (6 m) ^ 2 = 54 kN m

The working is checked too: evaluating each benchmark’s substituted line, with its displayed values, must give the result again.

Random formulas3,000

The computer builds 3,000 formulas from a fixed starting point (seed), so every run checks exactly the same ones. Half are written out with every bracket and multiplication sign; each must give the value computed for it separately. The other half use everyday notation, such as a fraction followed by a name; each must give the right value or be refused with a reason, and fewer than a quarter may be refused.

Formulas no one wrote by hand catch mistakes no one thought to test: many of the misreadings fixed in engine 2 showed up this way.

The second calculator, in Python

This script shares no code with the engine: plain Python, with inputs typed in by hand. It recomputes every benchmark, published answer and function above, and our test suite checks that it agrees. Copy it and run it with any Python 3. Python is only the measuring tool here; the Python cells in MathCanvas are a separate feature.

"""Independent recomputation of the AltoDocs validation references.

A second implementation in another language, sharing no code with the
calculation engine: plain Python floats, inputs typed in by hand from the
cases on altodocs.io/verification. Run it with any Python 3:

    python3 references.py

It prints every reference in the order the validation page lists them, in
the units shown there. The engine's test suite runs this script and checks
that it agrees with the published case data.
"""
import json
from decimal import ROUND_HALF_UP, Decimal
from math import (acos, acosh, asin, asinh, atan, atan2, atanh, ceil, cos, cosh, exp, floor, gcd, hypot,
                  lcm, log, log2, log10, pi, radians, sin, sinh, sqrt, tan, tanh, trunc)
from statistics import mean, median, stdev

kN, m, mm, cm, MPa, GPa = 1e3, 1.0, 1e-3, 1e-2, 1e6, 1e9  # SI: N, m, Pa
SQRT3 = sqrt(3)

# Engineering benchmarks, in each check's unit.
q, L, E, I = 12 * kN / m, 6 * m, 210 * GPa, 8356 * cm**4
W_pl, f_y = 628.4 * cm**3, 235 * MPa
M_c_Rd = W_pl * f_y / 1.0
benchmarks = [
    q * L**2 / 8 / (kN * m),                       # M = qL²/8 [kN m]
    q * L / 2 / kN,                                # V = qL/2 [kN]
    5 * q * L**4 / (384 * E * I) / mm,             # δ = 5qL⁴/(384EI) [mm]
    M_c_Rd / (kN * m),                             # M_c,Rd = W_pl f_y / γ_M0 [kN m]
    54 * kN * m / M_c_Rd,                          # η = M_Ed / M_c,Rd [-]
    pi**2 * E * I / (6 * m) ** 2 / kN,             # N_cr = π²EI/L_cr² [kN]
    1.0 * 30 * MPa / 1.5 / MPa,                    # f_cd = α_cc f_ck / γ_c [MPa]
    120 * kN * m / (300 * mm * (450 * mm) ** 2 * (20 * MPa)),  # μ [-]
    0.6 * 800 * MPa * 245 * mm**2 / 1.25 / kN,     # F_v,Rd [kN]
    (1.35 * 10 + 1.5 * 5),                         # E_d [kN/m]
    25 * 0.2,                                      # g = ρh [kN/m²]
    0.8 * 1.0 * 1.0 * 1.0,                         # s = μ₁ C_e C_t s_k [kN/m²]
    12e-6 * 30 * 10 * m / mm,                      # ΔL = α ΔT L [mm]
    1.2 * 20**2 / 8,                               # M = wL²/8 [kip ft]
]

# NIST StRD datasets, as published (NumAcc1.dat and Mavro.dat, data lines). The
# Mavro values are decimal, so they are read as decimals: in binary floats the
# certified standard deviation is only reproduced to 13 digits.
NUMACC1 = [10000001, 10000003, 10000002]
MAVRO = [Decimal(v) for v in '''
2.00180 2.00170 2.00180 2.00190 2.00180 2.00170 2.00150 2.00140 2.00150 2.00150
2.00170 2.00180 2.00180 2.00190 2.00190 2.00210 2.00200 2.00160 2.00140 2.00130
2.00130 2.00150 2.00150 2.00160 2.00150 2.00140 2.00130 2.00140 2.00150 2.00140
2.00150 2.00160 2.00150 2.00160 2.00190 2.00200 2.00200 2.00210 2.00220 2.00230
2.00240 2.00250 2.00270 2.00260 2.00260 2.00260 2.00270 2.00260 2.00250 2.00240
'''.split()]

# Published results, from the printed inputs: JRC EUR 27346 EN (steel),
# JRC EUR 26566 EN (concrete), JRC EUR 26698 EN (fire), NIST StRD (statistics).
published = [
    170.9 * cm**2 * 355 * MPa / 1.00 / kN,                       # N_c,Rd [kN]
    pi * sqrt(210 * GPa / (355 * MPa)),                          # λ₁
    4.335 * m / (7.53 * cm),                                     # λ_z
    57.57 / 76.41,                                               # λ̄_z
    0.5 * (1 + 0.49 * (0.75 - 0.2) + 0.75**2),                   # Φ_z
    1 / (0.92 + sqrt(0.92**2 - 0.75**2)),                        # χ_z
    0.69 * 170.9 * cm**2 * 355 * MPa / 1.00 / kN,                # N_b,Rd [kN]
    1307 * cm**3 * 355 * MPa / 1.00 / (kN * m),                  # M_c,Rd [kN m]
    42.69 * cm**2 * 355 * MPa / (SQRT3 * 1.00) / kN,             # V_pl,Rd [kN]
    sqrt(1307 * cm**3 * 355 * MPa / (164.7 * kN * m)),           # λ̄_LT
    0.5 * (1 + 0.34 * (1.68 - 0.2) + 1.68**2),                   # Φ_LT
    1 / (2.16 + sqrt(2.16**2 - 1.68**2)),                        # χ_LT
    0.28 * 1307 * cm**3 * 355 * MPa / 1.00 / (kN * m),           # M_b,Rd [kN m]
    6.2 * mm * 130 * mm * 235 * MPa / (SQRT3 * 1.00) / kN,       # V_pl,Rd beam web [kN]
    0.6 * 157 * mm**2 * 400 * MPa / 1.25 / kN,                   # F_v,Rd M16 [kN]
    2 * 3 * mm * 130 * mm * 360 * MPa / (SQRT3 * 0.8 * 1.25) / kN,  # F_w,Rd [kN]
    0.6 * 245 * mm**2 * 500 * MPa / 1.25 / kN,                   # F_v,Rd M20 [kN]
    2.5 * 0.659 * 20 * mm * 5.6 * mm * 360 * MPa / 1.25 / kN,    # F_b,Rd beam web [kN]
    (0.5 * 290 * mm**2 * 360 * MPa / 1.25 + 670 * mm**2 * 235 * MPa / (SQRT3 * 1.00)) / kN,      # V_eff,2,Rd fin plate [kN]
    10 * mm * 140 * mm * 235 * MPa / (SQRT3 * 1.00) / kN,        # V_pl,Rd fin plate [kN]
    (0.5 * 162.4 * mm**2 * 360 * MPa / 1.25 + 515.2 * mm**2 * 235 * MPa / (SQRT3 * 1.00)) / kN,  # V_eff,2,Rd beam web [kN]
    (10 * mm * (140 * mm) ** 2 / 6) * 235 * MPa / 1.00 / (kN * m),  # M_el,Rd [kN m]
    # JRC EUR 26566 EN, concrete (lengths in mm, stresses in N/mm²).
    0.2 * 2875 + 0.1 * (0.85 * 7125),                            # b_eff,1 mid-span [mm]
    2 * (0.2 * 2875 + 0.1 * 0.85 * 7125) + 250,                  # b_eff mid-span [mm]
    0.2 * 2875 + 0.1 * (0.30 * 7125),                            # b_eff,1 support [mm]
    2 * 788.8 + 250,                                             # b_eff support [mm]
    89.3e6 / (2611.2 * 372**2 * (25 / 1.5)),                     # K mid-span
    0.5 * (1 + sqrt(1 - 2 * 0.0148)),                            # z/d mid-span
    89.3e6 / (435 * 372 * 0.9925),                               # A_sl mid-span [mm²]
    132.9e6 / (250 * 372**2 * (25 / 1.5)),                       # K support
    0.5 * (1 + sqrt(1 - 2 * 0.230)),                             # z/d support
    132.9e6 / (435 * 372 * 0.867),                               # A_sl support [mm²]
    4 * pi * 14**2 / 4,                                          # A_s 4ϕ14 [mm²]
    9 * pi * 12**2 / 4,                                          # A_s 9ϕ12 [mm²]
    129.9 * (3.36 - 0.372) / 3.36,                               # V_Ed,red [kN]
    1 + sqrt(200 / 372),                                         # k
    565 / (250 * 372),                                           # ρ_l
    0.12 * (1 + sqrt(200 / 372)) * (100 * 565 / (250 * 372) * 25) ** (1 / 3) * 250 * 372 / 1e3,  # V_Rd,c [kN]
    115.52e3 / (0.9 * 372 * 435 * 2.5) * 1e3,                    # A_sw/s [mm²/m]
    0.08 * sqrt(25) / 500 * 250 * 1e3,                           # a_sw,min [mm²/m]
    0.6 * (1 - 25 / 250),                                        # ν
    250 * 0.9 * 372 * 0.54 * (25 / 1.5) / (2.5 + 0.4) / 1e3,     # V_Rd,max [kN]
    1.0 * 1.8 / 1.5,                                             # f_ctd [N/mm²]
    0.5 * (2611.2 - 250) / 2611.2 * 115520 / (0.9 * 372 * 180),  # ν_Ed,A [N/mm²]
    0.5 * (2611.2 - 250) / 2611.2 * 89830 / (0.9 * 372 * 180),   # ν_Ed,C [N/mm²]
    0.5 * (1827.6 - 250) / 1827.6 * 101830 / (0.9 * 372 * 180),  # ν_Ed,B,left [N/mm²]
    0.5 * (1827.6 - 250) / 1827.6 * 131410 / (0.9 * 372 * 180),  # ν_Ed,B,right [N/mm²]
    0.5 * (2611.2 - 250) / 2611.2 * 115520 / (0.9 * 372 * 435) / 2.0,  # A_st/s support A [mm²/mm]
    0.5 * (2611.2 - 250) / 2611.2 * 89830 / (0.9 * 372 * 435) / 2.0,   # A_st/s support C [mm²/mm]
    0.5 * (1827.6 - 250) / 1827.6 * 101830 / (0.9 * 372 * 435) / 2.0,  # A_st/s support B left [mm²/mm]
    0.5 * (1827.6 - 250) / 1827.6 * 131410 / (0.9 * 372 * 435) / 2.0,  # A_st/s support B right [mm²/mm]
    pi * 8**2 / (4 * 250),                                       # ϕ8/250 [mm²/mm]
    1.3 * (4.5 + 3.0),                                           # G_Ed [kN/m²]
    1.3 * (4.5 + 3.0) + 1.5 * 2.0,                               # L_Ed [kN/m²]
    210 - 30 - 16 / 2,                                           # d_y [mm]
    210 - 30 - 16 - 16 / 2,                                      # d_z [mm]
    0.4 * 0.54 * 25 / 1.5,                                       # ν_Rd,max [N/mm²]
    1.15 * 705e3 / (4 * 500 * 164),                              # ν_Ed at u₀ [N/mm²]
    4 * 500 + 2 * pi * 2 * 164,                                  # u₁ [mm]
    1.15 * 705e3 / (4061 * 164),                                 # ν_Ed at u₁ [N/mm²]
    1 + sqrt(200 / 164),                                         # k punching
    0.12 * 2.0 * (100 * 0.0083 * 25) ** (1 / 3),                 # ν_Rd,c [N/mm²]
    0.035 * 2.0**1.5 * 25**0.5,                                  # ν_min [N/mm²]
    (1.22 - 0.75 * 0.66) * 4060.88 * 123 / (1.5 * 291),          # A_sw per perimeter [mm²]
    1.15 * 705e3 / (0.66 * 164),                                 # u_out [mm]
    (7490.30 - 4 * 500) / (2 * pi),                              # a [mm]
    # JRC EUR 26698 EN, fire: steel beam and column (B. Zhao), timber (A. Frangi).
    1.25 * 23.135 * 7,                                           # P_fi,d,t [kN]
    1.12 * 3**2 / 2 + 202.4 * 3 / 2,                             # M_fi,d,t [kN m]
    0.85 * sqrt(235 / 275),                                      # ε
    72 * 0.85 * sqrt(235 / 275),                                 # 72ε
    9 * 0.85 * sqrt(235 / 275),                                  # 9ε
    2088.47e3 * 275 / 1.0 / 1e6,                                 # M_pl,Rd [kN m]
    4896 * 275 / sqrt(3) / 1.0 / 1e3,                            # V_pl,Rd [kN]
    308.6 * 1.0 / (574.3 * 1.0),                                 # μ₀,M
    104.5 * 1.0 / (777.3 * 1.0),                                 # μ₀,V
    0.537 * 0.7 * 1.0,                                           # μ₀,M,κ unprotected
    max(0.376, 0.134),                                           # μ₀ unprotected
    39.19 * log(1 / (0.9674 * 0.376**3.833) - 1) + 482,          # θ_cr unprotected [°C]
    600 + (0.47 - 0.376) / (0.47 - 0.23) * 100,                  # θ_cr from k_y,θ [°C]
    0.9 * 70 / 107,                                              # k_sh
    0.589 / (600 * 7850) * 107 * 3,                              # k_sh (A_m/V) Δt / (c_a ρ_a)
    308.6 / 574.3 * 0.85 * 1.0,                                  # μ₀,M,κ protected
    39.19 * log(1 / (0.9674 * 0.457**3.833) - 1) + 482,          # θ_cr protected [°C]
    1200 * 350 / (600 * 7850) * 10e-3 * 107,                     # ϕ sprayed protection
    14.105 * 7 + 202.4 + 1.12 * 6,                               # P_fi,d,t column [kN]
    120 - 2 * (30 * 0.8 + 7),                                    # b_fi secondary beam [mm]
    260 - (30 * 0.8 + 7),                                        # h_fi secondary beam [mm]
    58 * 229**2 / 6 / 1e3,                                       # W_fi secondary beam [cm³]
    (0.17 + 0.09 + 1.32 + 0.06 + 0.28 + 1.0 + 0.3 * 2.0) * 1.0 * 4.0**2 / 8,  # M_d,fi secondary [kN m]
    (0.17 + 0.09 + 1.32 + 0.06 + 0.28 + 1.0 + 0.3 * 2.0) * 1.0 * 4.0**2 / 8 * 1e6 / (58 * 229**2 / 6),  # σ_d,fi secondary [N/mm²]
    160 - 2 * (30 * 0.7 + 7),                                    # b_fi main beam [mm]
    735 - (30 * 0.7 + 7),                                        # h_fi main beam [mm]
    104 * 707**2 / 6 / 1e3,                                      # W_fi main beam [cm³]
    (0.17 + 0.17 + 0.09 + 1.32 + 0.06 + 0.28 + 1.0 + 0.3 * 2.0) * 4.0 * 8.0**2 / 8,  # M_d,fi main [kN m]
    118.1e6 / 8664e3,                                            # σ_d,fi main [N/mm²]
    (160 - 2 * (30 * 0.8 + 7)) ** 2,                             # A_fi column [mm²]
    (0.17 + 0.17 + 0.09 + 1.32 + 0.06 + 0.28 + 1.0 + 0.3 * 2.0) * 4.0 * 8.0 / 2,  # N_d,fi column [kN]
    59.0e3 / 9604,                                               # σ_d,fi column [N/mm²]
    sqrt(98 * 98**3 / 12 / (98 * 98)),                           # i_fi column [mm]
    3000 / 28.3,                                                 # λ_fi column
    106.0 / 3.14 * sqrt(21 / (2 / 3 * 11000)),                   # λ_rel,fi column
    1.25 * 21.0 * 0.27,                                          # f_c,0,d,fi column [N/mm²]
    # NIST StRD certified values: NumAcc1 and Mavro.
    mean(NUMACC1),                                               # mean, NumAcc1
    stdev(NUMACC1),                                              # standard deviation, NumAcc1
    float(mean(MAVRO)),                                          # mean, Mavro
    float(stdev(MAVRO)),                                         # standard deviation, Mavro
]

# Every function the editor offers, in the order of the validation page.
# round() is half away from zero, as in the engine; Python's own round() is
# half to even, so it is computed with Decimal.
half_up = lambda x, places: float(Decimal(x).quantize(Decimal(places), ROUND_HALF_UP))
functions = [
    sqrt(2), sqrt(16), 27 ** (1 / 3), 16 ** (1 / 4), 2**10, hypot(3, 4),
    sin(radians(30)), sin(1), cos(radians(60)), tan(radians(45)), 1 / tan(radians(45)), 1 / cos(radians(60)), 1 / sin(radians(30)),
    asin(0.5), acos(0.5), atan(1), asin(0.5), acos(0.5), atan(1), atan2(1, -1),
    sinh(1), cosh(1), tanh(1), asinh(1), acosh(2), atanh(0.5),
    log(8, 2), log10(1000), log2(32), log(10), exp(1),
    abs(-3.5), -1, floor(2.7), ceil(2.1), half_up('2.5', '1'), half_up('3.14159', '0.01'), trunc(-2.7),
    max(3, 2500 / 1000), min(3, 7, 5), sum([1, 2, 3, 4]), 2 * 3 * 4, mean([2, 4, 9]), median([3, 1, 4, 1, 5]), stdev([2, 4, 4, 4, 5, 5, 7, 9]),
    17 % 5, gcd(12, 18), lcm(4, 6),
]

if __name__ == '__main__':
    print(json.dumps({'benchmarks': benchmarks, 'published': published, 'functions': functions}, indent=2))
Release gate and engine versions3

This page was built from calculation engine 3 (mathjs 15.2.0), commit c8b303d819f0 on 2026-10-30: 3,355 of 3,355 checks passed.

The checks on this page run before every release of the MathCanvas app and the calculation API, and when this page is built; every worksheet we ship is recalculated and compared with its recorded results. If anything fails, the release stops. Every change that can alter a result gets a new engine version, and every confirmed calculation error becomes a permanent check. The report of each version is archived.

EngineDateChange
1Before 2026-10-30First public calculation engine.
22026-10-30Formulas are read into one explicit tree; notation with two readings is refused with a reason; results carry their working.
32026-10-30Exact psi, ksi, horsepower, acre and torr (mathjs rounds them, the largest error 9 × 10⁻⁷ for acre); min after a number is the minute; displays round the decimal value (2.675 shows as 2.68, not 2.67); temperature units take no prefix (1.2e-5 1/K, not 12 MK⁻¹); a result is displayed in its own units, whatever was calculated before (after 1 sqft, 2.5 m² showed as 26.91 sqft).
Method and independent review

A written verification plan states what we claim, how each claim is evidenced, the acceptance criteria and how changes are controlled. A reviewer pack collects the plan, the release report of one frozen engine version, every case with its source, the discrepancies we found in sources and the test code. Our quality statement describes how we version, test and handle reported errors.

No independent review has taken place yet. If you are a reviewer, a university group or a firm assessing MathCanvas, contact us for the reviewer pack.