Home Developers CVP Evidence Reproduce

CVP reproduce

mechanical.statics.planar_equilibrium

Independent re-run pack: fixed input vectors, O3 expected values, oracle version, commands, and the last result summary. This is how a reader moves from “CalculatorX says it passed” to “I can reproduce why it passed.”

Identity

Calculation version, protocol version, and evidence revision are distinct.

Calculation version
1.0.0
CVP protocol
1.0.0-proposed · proposed
Evidence revision
2026-09-27.o2-o3.v2
Oracle
O3 · mpmath 1.4.1 · 80 dps
Generator
planar-equilibrium-mpmath-o3 · seed 20260927.planar-equilibrium-o3
Table SHA-256
fb7e0e5f7f76ee45392fe5d8b91cc0a1c14619556632445838de938dfa268f45

Numerical claim

O3 PASS is a tabulated-vector claim, not a whole-domain proof.

O2: planar ΣF/ΣM vs a separate-module identity (≤2 ULP). Not beam deflection, not distributed load, and not 3-D. ≤2 ULP vs O3 applies only to the published tabulated planar-equilibrium vectors. Not beam deflection.

  • Last O3 run 8 / 8
  • Max error observed 0 ULP
  • Threshold ≤ 2 ULP

Commands

Regenerate the table from the public generator. Independent REST check needs only this page's reproduce.json plus stdlib Python — no repo clone and no mpmath. The CVP runner remains a maintainer command.

Regenerate O3 table
python3 generate-planar-equilibrium-o3.py after downloading the public generator next to the table
Repo maintainer path
python3 scripts/lib/cvp/oracles/generate-planar-equilibrium-o3.py
Independent REST check
Compare POST /api/v1/calc/planar-equilibrium against /developers/cvp/reproduce/planar-equilibrium-o3-tables.json after downloading check-math-o3-rest.py next to planar-equilibrium-o3-tables.json (or pass --reproduce reproduce.json)
Re-run CVP
npm run cvp:run -- --capability mechanical.statics.planar_equilibrium
REST check
POST https://www.calculatorx.com/api/v1/calc/planar-equilibrium with a tabulated input from the table below

Re-running the generator without changing seed or inputs should reproduce table SHA-256 fb7e0e5f7f76ee45392fe5d8b91cc0a1c14619556632445838de938dfa268f45. Compare each expected_f64 to the production result within the declared ULP threshold.

Tabulated vectors

Every O3 vector used for the ≤2 ULP claim. Expected values come from the published mpmath table, not from the implementation under test.

IDKindInputsExpected (f64)ActualULPStatus
o3-345resultant{"mode":"resultant","forces":"3,0; 0,4"}{"oracle_layer":"analytic","resultant_n":5,"sum_fx":3,"sum_fy":4,"sum_m":0}{"mode":"resultant","model":"planar_equilibrium","sum_fx":3,"sum_fy":4,"sum_m":0,"resultant_n":5,"angle_deg":53.13010235415598,"convention":"CCW positive; M = x Fy − y Fx about the origin","balanced":false,"unknowns":[],"solver":"math.vector add + cross"}0PASS
o3-momentmoment{"mode":"resultant","forces":"0,-10,2,0"}{"oracle_layer":"analytic","resultant_n":10,"sum_fx":0,"sum_fy":-10,"sum_m":-20}{"mode":"resultant","model":"planar_equilibrium","sum_fx":0,"sum_fy":-10,"sum_m":-20,"resultant_n":10,"angle_deg":-90,"convention":"CCW positive; M = x Fy − y Fx about the origin","balanced":false,"unknowns":[],"solver":"math.vector add + cross"}0PASS
o3-bracketequilibrium3{"mode":"equilibrium","forces":"0,-100,2,0; 0,0,0,0,fx+fy","moments":"0,m"}{"oracle_layer":"analytic","resultant_n":100,"sum_fx":0,"sum_fy":-100,"sum_m":-200}{"mode":"equilibrium","model":"planar_equilibrium","sum_fx":0,"sum_fy":-100,"sum_m":-200,"resultant_n":100,"angle_deg":-90,"convention":"CCW positive; M = x Fy − y Fx about the origin","balanced":true,"unknowns":[{"id":"F2.fx","value":0},{"id":"F2.fy","value":100},{"id":"M1","value":200}],"solver":"math.linear_algebra solve order 3"}0PASS
o3-twoequilibrium2{"mode":"equilibrium","forces":"0,-10; 0,0,fx+fy"}{"oracle_layer":"analytic","resultant_n":10,"sum_fx":0,"sum_fy":-10,"sum_m":0}{"mode":"equilibrium","model":"planar_equilibrium","sum_fx":0,"sum_fy":-10,"sum_m":0,"resultant_n":10,"angle_deg":-90,"convention":"CCW positive; M = x Fy − y Fx about the origin","balanced":true,"unknowns":[{"id":"F2.fx","value":0},{"id":"F2.fy","value":10}],"solver":"math.linear_algebra solve order 2"}0PASS
o3-awkwardawkward{"mode":"resultant","forces":"1.37,-2.5,0.83,0.2"}{"oracle_layer":"analytic","resultant_n":2.85077182531,"sum_fx":1.37,"sum_fy":-2.5,"sum_m":-2.349}{"mode":"resultant","model":"planar_equilibrium","sum_fx":1.37,"sum_fy":-2.5,"sum_m":-2.349,"resultant_n":2.85077182531,"angle_deg":-61.27725871500539,"convention":"CCW positive; M = x Fy − y Fx about the origin","balanced":false,"unknowns":[],"solver":"math.vector add + cross"}0PASS
o3-aliasalias{"mode":"resultant","F":"5,0; -3,4"}{"oracle_layer":"analytic","resultant_n":4.472135955,"sum_fx":2,"sum_fy":4,"sum_m":0}{"mode":"resultant","model":"planar_equilibrium","sum_fx":2,"sum_fy":4,"sum_m":0,"resultant_n":4.472135955,"angle_deg":63.43494882292201,"convention":"CCW positive; M = x Fy − y Fx about the origin","balanced":false,"unknowns":[],"solver":"math.vector add + cross"}0PASS
o3-moments-onlymoments{"mode":"resultant","moments":"12; -4"}{"oracle_layer":"analytic","resultant_n":0,"sum_fx":0,"sum_fy":0,"sum_m":8}{"mode":"resultant","model":"planar_equilibrium","sum_fx":0,"sum_fy":0,"sum_m":8,"resultant_n":0,"angle_deg":null,"convention":"CCW positive; M = x Fy − y Fx about the origin","balanced":false,"unknowns":[],"solver":"math.vector add + cross"}0PASS
o3-cancelcancel{"mode":"resultant","forces":"2,3; -2,-3"}{"oracle_layer":"analytic","resultant_n":0,"sum_fx":0,"sum_fy":0,"sum_m":0}{"mode":"resultant","model":"planar_equilibrium","sum_fx":0,"sum_fy":0,"sum_m":0,"resultant_n":0,"angle_deg":null,"convention":"CCW positive; M = x Fy − y Fx about the origin","balanced":true,"unknowns":[],"solver":"math.vector add + cross"}0PASS