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.
Calculation verification
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
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.
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.
The checks on this page run before every release of MathCanvas and the AltoDocs API. One failure stops the release.
An example
A slash is the usual culprit. It is fine when only a unit follows it, and unclear when a number does.
How we check
106 answers printed in 3 European Commission design handbooks (steel, concrete and fire) and in NIST’s certified statistics. MathCanvas must reproduce each one.
104 unit conversions, including every unit you can pick in MathCanvas, compared with their official definitions.
A separate program, written in Python and sharing no code with MathCanvas, recomputes every reference answer. Both must agree.
14 everyday engineering formulas, each written in all the ways engineers write them (31 in total), must give the same answer.
3,000 formulas generated by computer and compared with their known answers, to catch mistakes no one thought to test.
32 worksheets that ship with AltoDocs (356 results) are recalculated on every release. If a number changes unexpectedly, the release stops.
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.
Answers printed in European Commission design handbooks and NIST’s certified data.
See all 106 →Every unit you can pick in MathCanvas, against its official definition.
See all 104 →Every function in MathCanvas, from √ and sin to max and ln, against its exact value.
See all 48 →Everyday engineering formulas, each written in all the ways engineers write them.
See all 31 →Formulas with two possible meanings must get no answer, never a guess.
See all 11 →The structure you see on screen decides the value.
See all 10 →Rounding and units on screen show the true result.
See all 31 →Each result’s working, with the numbers filled in, must give the result again.
See all 14 →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
No software is trusted on its own word. We work through these steps in order, and an independent reviewer has the last word.
One meaning or no answer. Thousands of checks run before every release.
Every worksheet we ship is recalculated on every release, each release’s report is archived, and PDFs can print the working.
Published answers from four official sources, every unit and function checked, and the tests themselves tested with planted mistakes.
The reviewer pack and our quality statement are written. Next, an engineer outside the project tries the review.
An independent engineer or university reviews one engine version. We publish their findings and our answers.
Limits
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.
For engineers and reviewers
Every check above, case by case: the formula, where its answer comes from, and its result once you run the checks.
The MathLive editor stores what you see as LaTeX, so the stored formula has the same structure as the one on screen.
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.
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.
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.
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.
| Quantity | Formula | Where | Engine input | Printed | Engine |
|---|---|---|---|---|---|
| N_c,Rd | A·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 kN | Not 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,41 | Not run |
| λ_z | L_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,57 | Not 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,75 | Not run |
| Φ_z | 0.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. 63 | 0.5\cdot\left(1+0.49\cdot\left(0.75-0.2\right)+0.75^{2}\right) | 0,92 | Not run |
| χ_z | 1/(Φ_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,69 | Not 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 kN | Not run |
| M_c,Rd | W_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 kNm | Not run |
| V_pl,Rd | A_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 kN | Not 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,68 | Not run |
| Φ_LT | 0.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. 74 | 0.5\cdot\left(1+0.34\cdot\left(1.68-0.2\right)+1.68^{2}\right) | 2,16 | Not run |
| χ_LT | 1/(Φ_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,28 | Not 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 kNm | Not 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 kN | Not 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 kN | Not 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 kN | Not 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 kN | Not 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 kN | Not 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 kN | Not 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 kN | Not 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 kN | Not 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 kNm | Not run |
| Quantity | Formula | Where | Engine input | Printed | Engine |
|---|---|---|---|---|---|
| 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. 66 | 0.2\cdot 2875\operatorname{mm}+0.1\cdot\left(0.85\cdot 7125\operatorname{mm}\right) | 1181 mm | Not 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. 66 | 2\cdot\left(0.2\cdot 2875\operatorname{mm}+0.1\cdot 0.85\cdot 7125\operatorname{mm}\right)+250\operatorname{mm} | 2611 mm | Not 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. 66 | 0.2\cdot 2875\operatorname{mm}+0.1\cdot\left(0.30\cdot 7125\operatorname{mm}\right) | 789 mm | Not 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. 66 | 2\cdot 788.8\operatorname{mm}+250\operatorname{mm} | 1828 mm | Not 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,0148 | Not 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. 70 | 0.5\cdot\left(1+\sqrt{1-2\cdot 0.0148}\right) | 0,9925 | Not 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,230 | Not 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. 70 | 0.5\cdot\left(1+\sqrt{1-2\cdot 0.230}\right) | 0,867 | Not 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. 70 | 4\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. 70 | 9\cdot\frac{\operatorname{\pi}\cdot\left(12\operatorname{mm}\right)^{2}}{4} | 1018 mm² | Not run |
| V_Ed,red | V_Ed·(a − d)/a | §3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 71 | 129.9\operatorname{kN}\cdot\frac{3.36\operatorname{m}-0.372\operatorname{m}}{3.36\operatorname{m}} | 115,52 kN | Not run |
| k | 1 + √(200/d) | §3.2.1.4: shear design of the T-beam at support A (J. Walraven, S. Gmainer), PDF p. 71 | 1+\sqrt{\frac{200}{372}} | 1,73 | Not run |
| ρ_l | A_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,0061 | Not run |
| V_Rd,c | C_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. 71 | 0.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 kN | Not run |
| A_sw/s | V_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²/m | Not run |
| a_sw,min | 0.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. 72 | 0.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. 72 | 0.6\cdot\left(1-\frac{25}{250}\right) | 0,54 | Not run |
| V_Rd,max | b_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. 72 | 0.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 kN | Not 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²/mm | Not 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²/mm | Not 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²/mm | Not 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²/mm | Not 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²/mm | Not run |
| G_Ed | 1.3·(G₁ + G₂) | §3.2.1.5: design of slabs supported by beams (J. Walraven, S. Gmainer), PDF p. 76 | 1.3\cdot\left(4.5+3.0\right)\cdot\frac{\operatorname{kN}}{\operatorname{m}^{2}} | 9,75 kN/m² | Not run |
| L_Ed | 1.3·(G₁ + G₂) + 1.5·Q | §3.2.1.5: design of slabs supported by beams (J. Walraven, S. Gmainer), PDF p. 76 | 1.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_y | h − c − ϕ/2 | §3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 83 | 210\operatorname{mm}-30\operatorname{mm}-\frac{16\operatorname{mm}}{2} | 172 mm | Not run |
| d_z | h − c − ϕ − ϕ/2 | §3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 83 | 210\operatorname{mm}-30\operatorname{mm}-16\operatorname{mm}-\frac{16\operatorname{mm}}{2} | 156 mm | Not run |
| ν_Rd,max | 0.4·ν·f_cd | §3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 84 | 0.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. 84 | 4\cdot 500\operatorname{mm}+2\cdot\operatorname{\pi}\cdot 2\cdot 164\operatorname{mm} | 4061 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}}{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. 85 | 1+\sqrt{\frac{200}{164}} | 2,10 | Not run |
| ν_Rd,c | C_Rd,c·k·(100·ρ_l·f_ck)^(1/3) | §3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 85 | 0.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 |
| ν_min | 0.035·k^(3/2)·f_ck^(1/2) | §3.2.2.3: punching shear at column B2 (J. Walraven, S. Gmainer), PDF p. 85 | 0.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 mm | Not 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 mm | Not run |
| Quantity | Formula | Where | Engine input | Printed | Engine |
|---|---|---|---|---|---|
| P_fi,d,t | 1.25·q·L | §2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 134 | 1.25\cdot 23.135\frac{\operatorname{kN}}{\operatorname{m}}\cdot 7\operatorname{m} | 202,4 kN | Not run |
| M_fi,d,t | q·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 kNm | Not run |
| ε (fire) | 0.85·√(235/f_y) | §2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 135 | 0.85\cdot\sqrt{\frac{235}{275}} | 0,786 | Not run |
| 72ε | 72·0.85·√(235/f_y) | §2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 135 | 72\cdot 0.85\cdot\sqrt{\frac{235}{275}} | 56,6 | Not run |
| 9ε | 9·0.85·√(235/f_y) | §2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 135 | 9\cdot 0.85\cdot\sqrt{\frac{235}{275}} | 7,07 | Not run |
| M_pl,Rd | W_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 kNm | Not run |
| V_pl,Rd | A_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 kN | Not run |
| μ₀,M | M_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,537 | Not run |
| μ₀,V | V_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,134 | Not run |
| μ₀,M,κ (unprotected) | μ₀,M·κ₁·κ₂ | §2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 136 | 0.537\cdot 0.7\cdot 1.0 | 0,376 | Not 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,376 | Not 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. 137 | 39.19\cdot\ln\left(\frac{1}{0.9674\cdot 0.376^{3.833}}-1\right)+482 | 629 °C | Not 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. 137 | 600+\frac{0.47-0.376}{0.47-0.23}\cdot 100 | 639 °C | Not run |
| k_sh | 0.9·(A_m/V)_b/(A_m/V) | §2.8.5, Example 3: HEA 360 main beam in fire (B. Zhao), PDF p. 137 | 0.9\cdot\frac{70}{107} | 0,589 | Not 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 3 | 4,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.0 | 0,457 | Not 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. 139 | 39.19\cdot\ln\left(\frac{1}{0.9674\cdot 0.457^{3.833}}-1\right)+482 | 599 °C | Not 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 107 | 0,0954 | Not 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. 140 | 14.105\cdot 7+202.4+1.12\cdot 6 | 307,9 kN | Not run |
| b_fi (secondary beam) | b − 2·(β_n·t + 7) | §6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238 | 120\operatorname{mm}-2\cdot\left(30\cdot 0.8\operatorname{mm}+7\operatorname{mm}\right) | 58 mm | Not run |
| h_fi (secondary beam) | h − (β_n·t + 7) | §6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238 | 260\operatorname{mm}-\left(30\cdot 0.8\operatorname{mm}+7\operatorname{mm}\right) | 229 mm | Not 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 kNm | Not 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. 238 | 160\operatorname{mm}-2\cdot\left(30\cdot 0.7\operatorname{mm}+7\operatorname{mm}\right) | 104 mm | Not run |
| h_fi (main beam) | h − (β_n·t + 7) | §6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 238 | 735\operatorname{mm}-\left(30\cdot 0.7\operatorname{mm}+7\operatorname{mm}\right) | 707 mm | Not 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 kNm | Not 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 kN | Not 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 mm | Not run |
| λ_fi (column) | ℓ/i_fi | §6.1.4: unprotected timber members, 30 minutes (A. Frangi), PDF p. 240 | \frac{3000}{28.3} | 106,0 | Not 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,8 | Not 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. 241 | 1.25\cdot 21.0\cdot 0.27 | 7,1 N/mm² | Not run |
| Quantity | Formula | Where | Engine input | Printed | Engine |
|---|---|---|---|---|---|
| Mean, NumAcc1 | mean of 3 eight-digit values | NumAcc1 (constructed, 3 values): certified values, NumAcc1.dat lines 41–43 | \operatorname{mean}\left(10000001,10000003,10000002\right) | 10000002 (exact) | Not run |
| Standard deviation, NumAcc1 | sample 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, Mavro | mean of 50 measurements | Mavro (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.00185600000000 | Not run |
| Standard deviation, Mavro | sample 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.000429123454003053 | Not run |
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.
q := 12\operatorname{\textcolor{blue}{kN}}/\operatorname{\textcolor{blue}{m}}L := 6\operatorname{\textcolor{blue}{m}}E := 210\operatorname{GPa}I := 8356\operatorname{cm}^{4}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 run0.125\cdot q\cdot L^{2}Not runq\cdot L^{2}/8Not runWritten 3 ways; each must give 36 kN.
\frac{q\cdot L}{2}Not run\frac{q}{2}LNot runq\cdot L/2Not runWritten 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 run5\cdot q\cdot L^{4}/\left(384\cdot E\cdot I\right)Not runW_{pl} := 628.4\operatorname{cm}^{3}f_{y} := 235\operatorname{\textcolor{blue}{MPa}}\gamma_{M0} := 1.0M_{Ed} := 54\operatorname{kN}\cdot \operatorname{m}Written 2 ways; each must give 147.674 kN m.
M_{c,Rd} := \frac{W_{pl}\cdot f_{y}}{\gamma_{M0}}Not runW_{pl}\cdot f_{y}/\gamma_{M0}Not runWritten 2 ways; each must give 0.36567.
\frac{M_{Ed}}{M_{c,Rd}}Not runM_{Ed}/M_{c,Rd}Not runE := 210\operatorname{GPa}I := 8356\operatorname{cm}^{4}L_{cr} := 6\operatorname{m}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\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}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 runWritten 2 ways; each must give 0.0987654.
\frac{M_{Ed}}{b\cdot d^{2}\cdot f_{cd}}Not runM_{Ed}/\left(b\cdot d^{2}\cdot f_{cd}\right)Not run\alpha_{v} := 0.6f_{ub} := 800\operatorname{MPa}A_{s} := 245\operatorname{mm}^{2}\gamma_{M2} := 1.25Written 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 runG_{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}Written 2 ways; each must give 21 kN/m.
1.35\cdot G_{k}+1.5\cdot Q_{k}Not run1.35G_{k}+1.5Q_{k}Not runWritten one way; each must give 5 kN/m^2.
\rho_{c}\cdot hNot run\mu_{1} := 0.8C_{e} := 1.0C_{t} := 1.0s_{k} := 1.0\operatorname{kN}/\operatorname{m}^{2}Written one way; each must give 0.8 kN/m^2.
\mu_{1}\cdot C_{e}\cdot C_{t}\cdot s_{k}Not run\alpha_{T} := 12\cdot 10^{-6}\operatorname{K}^{-1}\Delta T := 30\operatorname{K}L_{0} := 10\operatorname{m}Written one way; each must give 3.6 mm.
\alpha_{T}\cdot\Delta T\cdot L_{0}Not runw := 1.2\operatorname{kip}/\operatorname{ft}L_{s} := 20\operatorname{ft}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“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.
| Unit | Definition | Basis | Expected | Engine | Difference |
|---|---|---|---|---|---|
| 1 in | International inch (1959) | defined | 0.0254 m | Not run | — |
| 1 ft | International foot (1959) | defined | 0.3048 m | Not run | — |
| 1 yd | International yard (1959) | defined | 0.9144 m | Not run | — |
| 1 mi | International mile | defined | 1609.344 m | Not run | — |
| 1 lb | Avoirdupois pound (1959) | defined | 0.45359237 kg | Not run | — |
| 1 lbf | 1 lb × standard gravity | derived | 4.44822161526 N | Not run | — |
| 1 kip | 1000 lbf | derived | 4.44822161526 kN | Not run | — |
| 1 psi | 1 lbf/in² | derived | 6894.75729317 Pa | Not run | — |
| 1 ksi | 1000 lbf/in² | derived | 6.89475729317 MPa | Not run | — |
| 1 psf | 1 lbf/ft² | derived | 47.8802589803 Pa | Not run | — |
| 1 kip·ft | 1 kip × 1 ft | derived | 1.35581794833 kN m | Not run | — |
| 1 gal | US liquid gallon (231 in³) | defined | 3.785411784 L | Not run | — |
| 1 gₙ | Standard acceleration of gravity | defined | 9.80665 m/s^2 | Not run | — |
| 1 kgf | 1 kg × standard gravity | defined | 9.80665 N | Not run | — |
| 1 atm | Standard atmosphere | defined | 101325 Pa | Not run | — |
| 1 bar | 10⁵ Pa | defined | 100 kPa | Not run | — |
| 1° | π/180 rad | defined | 0.0174532925199 rad | Not run | — |
| 1 h | 3600 s | defined | 3600 s | Not run | — |
| 1 kWh | 3.6 × 10⁶ J | defined | 3.6 MJ | Not run | — |
| 1 MPa | SI prefixes | defined | 1 N/mm^2 | Not run | — |
| 1 t | Tonne (metric ton) | defined | 1000 kg | Not run | — |
| 1 ton | Read as the metric tonne; the US short ton is shortton | convention | 1000 kg | Not run | — |
| 1 nm | SI prefix nano | defined | 1e-9 m | Not run | — |
| 1 um | SI prefix micro | defined | 0.000001 m | Not run | — |
| 1 mm | SI prefix milli | defined | 0.001 m | Not run | — |
| 1 cm | SI prefix centi | defined | 0.01 m | Not run | — |
| 1 dm | SI prefix deci | defined | 0.1 m | Not run | — |
| 1 m | SI base unit of length | defined | 1000 mm | Not run | — |
| 1 km | SI prefix kilo | defined | 1000 m | Not run | — |
| 1 inch | International inch (1959) | defined | 0.0254 m | Not run | — |
| 1 foot | International foot (1959) | defined | 0.3048 m | Not run | — |
| 1 yard | International yard (1959) | defined | 0.9144 m | Not run | — |
| 1 mile | International mile | defined | 1609.344 m | Not run | — |
| 1 hectare | 10⁴ m² | defined | 10000 m^2 | Not run | — |
| 1 sqin | Square inch | derived | 0.00064516 m^2 | Not run | — |
| 1 sqft | Square foot | derived | 0.09290304 m^2 | Not run | — |
| 1 sqyd | Square yard | derived | 0.83612736 m^2 | Not run | — |
| 1 sqmi | Square mile | derived | 2589988.11034 m^2 | Not run | — |
| 1 acre | International acre, 43 560 ft² | derived | 4046.8564224 m^2 | Not run | — |
| 1 litre | 1 dm³ | defined | 0.001 m^3 | Not run | — |
| 1 mL | 1 cm³ | defined | 0.000001 m^3 | Not run | — |
| 1 cuin | Cubic inch | derived | 0.000016387064 m^3 | Not run | — |
| 1 cuft | Cubic foot | derived | 0.028316846592 m^3 | Not run | — |
| 1 cuyd | Cubic yard | derived | 0.764554857984 m^3 | Not run | — |
| 1 gallon | US liquid gallon (231 in³) | defined | 0.003785411784 m^3 | Not run | — |
| 1 mg | SI prefix milli | defined | 0.000001 kg | Not run | — |
| 1 gram | 1/1000 kg | defined | 0.001 kg | Not run | — |
| 1 kg | SI base unit of mass | defined | 1000 gram | Not run | — |
| 1 ounce | Avoirdupois ounce, lb/16 | defined | 0.028349523125 kg | Not run | — |
| 1 pound | Avoirdupois pound (1959) | defined | 0.45359237 kg | Not run | — |
| 1 shortton | US short ton, 2000 lb | defined | 907.18474 kg | Not run | — |
| 1 slug | 1 lbf·s²/ft | derived | 14.5939029372 kg | Not run | — |
| 1 s | SI base unit of time | defined | 1000 ms | Not run | — |
| 1 min | Minute | defined | 60 s | Not run | — |
| 1 hr | Hour | defined | 3600 s | Not run | — |
| 1 day | Day, 24 h | defined | 86400 s | Not run | — |
| 1 week | Week, 7 days | defined | 604800 s | Not run | — |
| 1 year | Julian year, 365.25 days | convention | 31557600 s | Not run | — |
| 1 N | 1 kg·m/s² | defined | 1 kg m / s^2 | Not run | — |
| 1 kN | SI prefix kilo | defined | 1000 N | Not run | — |
| 1 MN | SI prefix mega | defined | 1000000 N | Not run | — |
| 1 Pa | 1 N/m² | defined | 1 N / m^2 | Not run | — |
| 1 kPa | SI prefix kilo | defined | 1000 Pa | Not run | — |
| 1 GPa | SI prefix giga | defined | 1000000000 Pa | Not run | — |
| 1 torr | 1/760 standard atmosphere | defined | 133.322368421 Pa | Not run | — |
| 1 J | 1 N·m | defined | 1 N m | Not run | — |
| 1 kJ | SI prefix kilo | defined | 1000 J | Not run | — |
| 1 MJ | SI prefix mega | defined | 1000000 J | Not run | — |
| 1 Wh | 1 W × 3600 s | defined | 3600 J | Not run | — |
| 1 cal | Thermochemical calorie | defined | 4.184 J | Not run | — |
| 1 kcal | Thermochemical kilocalorie | defined | 4184 J | Not run | — |
| 1 BTU | International Table BTU | defined | 1055.05585262 J | Not run | — |
| 1 W | 1 J/s | defined | 1 J / s | Not run | — |
| 1 kW | SI prefix kilo | defined | 1000 W | Not run | — |
| 1 MW | SI prefix mega | defined | 1000000 W | Not run | — |
| 1 hp | Mechanical horsepower, 550 ft·lbf/s | derived | 745.699871582 W | Not run | — |
| 1 kelvin | SI base unit of temperature | defined | 1 K | Not run | — |
| 1 celsius | 1 °C is 274.15 K | defined | 274.15 K | Not run | — |
| 1 fahrenheit | 1 °F is (1 + 459.67) × 5/9 K | defined | 255.927777778 K | Not run | — |
| 1 rankine | 5/9 K | defined | 0.555555555556 K | Not run | — |
| 1 rad | 180/π degrees | defined | 57.2957795131 deg | Not run | — |
| 1 grad | π/200 rad | defined | 0.0157079632679 rad | Not run | — |
| 1 Hz | 1 per second | defined | 1 1 / s | Not run | — |
| 1 kHz | SI prefix kilo | defined | 1000 Hz | Not run | — |
| 1 MHz | SI prefix mega | defined | 1000000 Hz | Not run | — |
| 1 GHz | SI prefix giga | defined | 1000000000 Hz | Not run | — |
| 1 rpm | One revolution per minute | defined | 0.0166666666667 Hz | Not run | — |
| 1 A | 1 C/s | defined | 1 C / s | Not run | — |
| 1 mA | SI prefix milli | defined | 0.001 A | Not run | — |
| 1 V | 1 W/A | defined | 1 W / A | Not run | — |
| 1 kV | SI prefix kilo | defined | 1000 V | Not run | — |
| 1 ohm | 1 V/A | defined | 1 V / A | Not run | — |
| 1 kohm | SI prefix kilo | defined | 1000 ohm | Not run | — |
| 1 Mohm | SI prefix mega | defined | 1000000 ohm | Not run | — |
| 1 F | 1 C/V | defined | 1 C / V | Not run | — |
| 1 C | 1 A·s | defined | 1 A s | Not run | — |
| 1 henry | 1 V·s/A | defined | 1 V s / A | Not run | — |
| 1 T | 1 Wb/m² | defined | 1 weber / m^2 | Not run | — |
| 1 weber | 1 V·s | defined | 1 V s | Not run | — |
| 1 nmol | SI prefix nano | defined | 1e-9 mol | Not run | — |
| 1 umol | SI prefix micro | defined | 0.000001 mol | Not run | — |
| 1 mmol | SI prefix milli | defined | 0.001 mol | Not run | — |
| 1 mol | SI base unit of amount | defined | 1000 mmol | Not run | — |
| 1 kmol | SI prefix kilo | defined | 1000 mol | Not run | — |
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.
| Function | Engine input | Expected | Engine |
|---|---|---|---|
| √2 | \sqrt{2} | 1.41421 | Not run |
| √(16 m²) | \sqrt{16\operatorname{\textcolor{blue}{m}}^{2}} | 4 m | Not run |
| ∛27 | \sqrt[3]{27} | 3 | Not run |
| ⁴√16 | \sqrt[4]{16} | 2 | Not run |
| pow(2, 10) | \operatorname{pow}\left(2,10\right) | 1024 | Not run |
| hypot(3, 4) | \operatorname{hypot}\left(3,4\right) | 5 | Not run |
| sin(30°) | \sin\left(30\operatorname{\textcolor{blue}{deg}}\right) | 0.5 | Not run |
| sin(1), radians | \sin\left(1\right) | 0.841471 | Not run |
| cos(60°) | \cos\left(60\operatorname{\textcolor{blue}{deg}}\right) | 0.5 | Not run |
| tan(45°) | \tan\left(45\operatorname{\textcolor{blue}{deg}}\right) | 1 | Not run |
| cot(45°) | \cot\left(45\operatorname{\textcolor{blue}{deg}}\right) | 1 | Not run |
| sec(60°) | \sec\left(60\operatorname{\textcolor{blue}{deg}}\right) | 2 | Not run |
| csc(30°) | \csc\left(30\operatorname{\textcolor{blue}{deg}}\right) | 2 | Not run |
| arcsin(0.5) | \arcsin\left(0.5\right) | 0.523599 | Not run |
| arccos(0.5) | \arccos\left(0.5\right) | 1.0472 | Not run |
| arctan(1) | \arctan\left(1\right) | 0.785398 | Not run |
| asin(0.5) | \operatorname{asin}\left(0.5\right) | 0.523599 | Not run |
| acos(0.5) | \operatorname{acos}\left(0.5\right) | 1.0472 | Not run |
| atan(1) | \operatorname{atan}\left(1\right) | 0.785398 | Not run |
| atan2(1, −1) | \operatorname{atan2}\left(1,-1\right) | 2.35619 | Not run |
| sinh(1) | \sinh\left(1\right) | 1.1752 | Not run |
| cosh(1) | \cosh\left(1\right) | 1.54308 | Not run |
| tanh(1) | \tanh\left(1\right) | 0.761594 | Not run |
| asinh(1) | \operatorname{asinh}\left(1\right) | 0.881374 | Not run |
| acosh(2) | \operatorname{acosh}\left(2\right) | 1.31696 | Not run |
| atanh(0.5) | \operatorname{atanh}\left(0.5\right) | 0.549306 | Not run |
| log₂(8) | \log_{2}\left(8\right) | 3 | Not run |
| log₁₀(1000) | \log_{10}\left(1000\right) | 3 | Not run |
| log2(32) | \operatorname{log2}\left(32\right) | 5 | Not run |
| ln(10) | \ln\left(10\right) | 2.30259 | Not run |
| exp(1) | \exp\left(1\right) | 2.71828 | Not run |
| |−3.5 kN| | \left|-3.5\operatorname{\textcolor{blue}{kN}}\right| | 3.5 kN | Not run |
| sign(−2) | \operatorname{sign}\left(-2\right) | -1 | Not run |
| floor(2.7) | \operatorname{floor}\left(2.7\right) | 2 | Not run |
| ceil(2.1) | \operatorname{ceil}\left(2.1\right) | 3 | Not run |
| round(2.5) | \operatorname{round}\left(2.5\right) | 3 | Not run |
| round(3.14159, 2) | \operatorname{round}\left(3.14159,2\right) | 3.14 | Not run |
| fix(−2.7) | \operatorname{fix}\left(-2.7\right) | -2 | Not run |
| max(3 kN, 2500 N) | \max\left(3\operatorname{\textcolor{blue}{kN}},2500\operatorname{\textcolor{blue}{N}}\right) | 3 kN | Not run |
| min(3, 7, 5) | \min\left(3,7,5\right) | 3 | Not run |
| sum(1, 2, 3, 4) | \operatorname{sum}\left(1,2,3,4\right) | 10 | Not run |
| prod(2, 3, 4) | \operatorname{prod}\left(2,3,4\right) | 24 | Not run |
| mean(2, 4, 9) | \operatorname{mean}\left(2,4,9\right) | 5 | Not run |
| median(3, 1, 4, 1, 5) | \operatorname{median}\left(3,1,4,1,5\right) | 3 | Not run |
| std(2, 4, 4, 4, 5, 5, 7, 9) | \operatorname{std}\left(2,4,4,4,5,5,7,9\right) | 2.13809 | Not run |
| mod(17, 5) | \operatorname{mod}\left(17,5\right) | 2 | Not run |
| gcd(12, 18) | \operatorname{gcd}\left(12,18\right) | 6 | Not run |
| lcm(4, 6) | \operatorname{lcm}\left(4,6\right) | 12 | Not run |
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.
| Rule | Engine input | Shows | Result |
|---|---|---|---|
| Two decimals | \frac{1}{3} | 0.33 | Not run |
| A half rounds away from zero | 0.125 | 0.13 | Not run |
| Rounded as written, not as stored in binary | 2.675 | 2.68 | Not run |
| Negative values round the same way | -2.675 | -2.68 | Not run |
| Percentage | 0.285 | 29\% | Not run |
| Engineering notation | 12345 | 12.35 \cdot 10^{3} | Not run |
| A small value never shows as zero | 0.000012 | 0.000012 | Not run |
| Zero shows as zero | 0 | 0.00 | Not run |
| A small area in m² keeps its digits | 1570\operatorname{\textcolor{blue}{mm}}^{2} | 0.00157 \operatorname{\textcolor{blue}{m}}^{2} | Not run |
| Force in kN | 1500\operatorname{\textcolor{blue}{N}} | 1.50 \operatorname{\textcolor{blue}{kN}} | Not run |
| Force: from 1000 N in kN | 1000\operatorname{\textcolor{blue}{N}} | 1.00 \operatorname{\textcolor{blue}{kN}} | Not run |
| Force: below 1000 N in N | 999\operatorname{\textcolor{blue}{N}} | 999.00 \operatorname{\textcolor{blue}{N}} | Not run |
| Moment: below 1000 N·m in N·m | 999\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 MPa | 1000000\operatorname{\textcolor{blue}{Pa}} | 1.00 \operatorname{\textcolor{blue}{MPa}} | Not run |
| Modulus: from 1 GPa in GPa | 1000000000\operatorname{\textcolor{blue}{Pa}} | 1.00 \operatorname{\textcolor{blue}{GPa}} | Not run |
| Moment in kN·m | 5\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 MPa | 235\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 kip | 1500\operatorname{\textcolor{blue}{lbf}} | 1.50 \operatorname{\textcolor{blue}{kip}} | Not run |
| Imperial worksheet: from 1000 lbf in kip | 1000\operatorname{\textcolor{blue}{lbf}} | 1.00 \operatorname{\textcolor{blue}{kip}} | Not run |
| Imperial worksheet: below 1000 lbf in lbf | 999\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 kept | 54\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 prefix | 12\cdot 10^{-6}\frac{1}{\operatorname{\textcolor{blue}{K}}} | 0.000012 \operatorname{\textcolor{blue}{K}}^{-1} | Not run |
| Mixed units add exactly | 1\operatorname{\textcolor{blue}{m}}+1\operatorname{\textcolor{blue}{foot}} | 1.305 \operatorname{\textcolor{blue}{m}} | Not run |
| Lengths keep the unit they were written in | 3\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 shown | 2.5\operatorname{\textcolor{blue}{m}}^{2} | 2.50 \operatorname{\textcolor{blue}{m}}^{2} | Not run |
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 page | Engine input | Expected | Result |
|---|---|---|---|
| ⅛ q · L² | \frac{1}{8}q\cdot L^{2} | 54 kN m | Not run |
| (q/2) L | \frac{q}{2}L | 36 kN | Not run |
| (6/2) x | \frac{6}{2}x | 12 | Not run |
| (a/b)² | \frac{a}{b}^{2} | 0.444444 | Not run |
| −½ x | -\frac{1}{2}x | -2 | Not run |
| x ½ | x\frac{1}{2} | 2 | Not run |
| a ÷ (b/x) | a/\frac{b}{x} | 2.66667 | Not run |
| sin(π/2) | \sin\frac{\operatorname{\pi}}{2} | 1 | Not run |
| 0.1 + 0.2 | 0.1+0.2 | 0.3 | Not run |
| 5 N/mm² | 5\operatorname{N}/\operatorname{mm}^{2} | 5 MPa | Not run |
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.
| Written | Why it is refused | Write instead | Result |
|---|---|---|---|
| 5 kN / 2 m | 5 kN ÷ (2 m), or (5 kN ÷ 2) · m? | A fraction, or 5 kN / (2 m) | Should be refused |
| 1/2 m | Half a metre, or one over two metres? | A fraction, or 1/(2 m) | Should be refused |
| a/2b | a ÷ (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%x | 5 % of x, or 5 modulo x? | 5 % · x | Should 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 · 4 | Should be refused |
| 6 ÷ 3 | ÷ is written in some places for ratios and ranges. | A fraction, 6/3 | Should be refused |
| ± 3 | Two values in one result. | One region per case | Should be refused |
| ∓ 3 | Two values in one result. | One region per case | Should be refused |
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.
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.
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))
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.
| Engine | Date | Change |
|---|---|---|
| 1 | Before 2026-10-30 | First public calculation engine. |
| 2 | 2026-10-30 | Formulas are read into one explicit tree; notation with two readings is refused with a reason; results carry their working. |
| 3 | 2026-10-30 | Exact 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). |
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.