Home Developers CVP Evidence Reproduce

CVP reproduce

math.log

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.1.5
CVP protocol
1.0.0-proposed · proposed
Evidence revision
2026-09-08.xcal
Oracle
O3 · mpmath 1.4.1 · 80 dps
Generator
math-mpmath-o3 · seed 20260907
Table SHA-256
efdad939a92a67df1f3995db36c52bb87f428a59fc73568f789c02540f4372ee

Numerical claim

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

≤2 ULP vs O3 applies to the 14 published tabulated common-log vectors (log₁₀ of 1, 10, 100, 0.1, 2, 1000 plus 8 seeded random x = 10^(u·6−2) in about [0.01, 10⁴]). It is not a guarantee over all bases, the whole positive reals, or unlisted neighborhoods of 0 and 1.

  • Last O3 run 14 / 14
  • Max error observed 0.5588572521476642 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-math-o3.py after downloading the public generator next to the table
Repo maintainer path
python3 scripts/lib/cvp/oracles/generate-math-o3.py
Independent REST check
python3 check-math-o3-rest.py log10 after downloading check-math-o3-rest.py next to math-o3-tables.json (or pass --reproduce reproduce.json)
Re-run CVP
npm run cvp:run -- --capability math.log
REST check
POST https://www.calculatorx.com/api/v1/calc/log with a tabulated input from the table below

Re-running the generator without changing seed or inputs should reproduce table SHA-256 efdad939a92a67df1f3995db36c52bb87f428a59fc73568f789c02540f4372ee. 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-log10-1p0interior{"x":1,"base":"10"}0
0.0
00PASS
o3-log10-10p0interior{"x":10,"base":"10"}1
1.000000000000000000000000000000000000000
10PASS
o3-log10-100p0interior{"x":100,"base":"10"}2
2.000000000000000000000000000000000000000
20PASS
o3-log10-0p1interior{"x":0.1,"base":"10"}-1
-1.000000000000000000000000000000000000000
-10PASS
o3-log10-2p0interior{"x":2,"base":"10"}0.3010299956639812
0.3010299956639811952137388947244930267682
0.30102999566398120PASS
o3-log10-1000p0interior{"x":1000,"base":"10"}3
3.000000000000000000000000000000000000000
30PASS
o3-log10-rand-00random-interior{"x":2.801182637514798,"base":"10"}0.4473414258100093
0.4473414258100092739585058723437655146953
0.447341425810009240.5588572521476642PASS
o3-log10-rand-01random-interior{"x":253.04877701188164,"base":"10"}2.4032042426988482
2.403204242698848223231576019138293834216
2.40320424269884820PASS
o3-log10-rand-02random-interior{"x":908.8372887797552,"base":"10"}2.958486137446016
2.958486137446016072265429607028576161399
2.9584861374460160PASS
o3-log10-rand-03random-interior{"x":35.83770308093714,"base":"10"}1.5543401669710875
1.554340166971087454833292639408778144528
1.55434016697108750PASS
o3-log10-rand-04random-interior{"x":0.303973263679299,"base":"10"}-0.5171646135859191
-0.5171646135859191150297526899882842741670
-0.51716461358591910PASS
o3-log10-rand-05random-interior{"x":97.26995949052845,"base":"10"}1.9879787350073457
1.987978735007345707853397117325222524152
1.98797873500734570PASS
o3-log10-rand-06random-interior{"x":52.516519905953444,"base":"10"}1.720295939128846
1.720295939128845924988783693898778952831
1.7202959391288460PASS
o3-log10-rand-07random-interior{"x":1033.9184358911507,"base":"10"}3.0144862793385983
3.014486279338598281718400946709428234484
3.01448627933859830PASS