{
  "capability_id": "math.log",
  "calculation_version": "1.1.5",
  "protocol_version": "1.0.0-proposed",
  "protocol_document_status": "proposed",
  "verification_revision": "2026-09-08.xcal",
  "oracle": {
    "class": "O3",
    "library": "mpmath 1.4.1",
    "mpmath_dps": 80,
    "backend": "python",
    "rounding": "round-to-nearest-binary64",
    "generator_id": "math-mpmath-o3",
    "generator_version": "1.0.0",
    "generator_sha256": "3453ec60bd03738a1f1f3723baed7e617ff49466452efab1844fe68b8f654cea",
    "table_sha256": "efdad939a92a67df1f3995db36c52bb87f428a59fc73568f789c02540f4372ee",
    "seed": "20260907",
    "independent_of_iut": true
  },
  "claim_scope": "≤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.",
  "commands": {
    "regenerate_table": "python3 generate-math-o3.py",
    "regenerate_table_repo": "python3 scripts/lib/cvp/oracles/generate-math-o3.py",
    "independent_rest": "python3 check-math-o3-rest.py log10",
    "run_cvp": "npm run cvp:run -- --capability math.log",
    "rest_example": "POST https://www.calculatorx.com/api/v1/calc/log"
  },
  "public_files": {
    "table": "/developers/cvp/reproduce/math-o3-tables.json",
    "table_url": "https://www.calculatorx.com/developers/cvp/reproduce/math-o3-tables.json",
    "generator": "/developers/cvp/reproduce/generate-math-o3.py",
    "generator_url": "https://www.calculatorx.com/developers/cvp/reproduce/generate-math-o3.py",
    "checker": "/developers/cvp/reproduce/check-math-o3-rest.py",
    "checker_url": "https://www.calculatorx.com/developers/cvp/reproduce/check-math-o3-rest.py",
    "manifest": "/evidence/math.log/1.1.5.cvp.json",
    "this_file": "/evidence/math.log/reproduce.json"
  },
  "result_summary": {
    "passed": 14,
    "total": 14,
    "failed": 0,
    "max_error_ulp": 0.5588572521476642,
    "threshold_ulp": 2,
    "max_threshold_ulp": 2
  },
  "vectors": [
    {
      "id": "o3-log10-1p0",
      "kind": "interior",
      "inputs": {
        "x": 1,
        "base": "10"
      },
      "expected_f64": 0,
      "expected_decimal": "0.0",
      "actual": 0,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-10p0",
      "kind": "interior",
      "inputs": {
        "x": 10,
        "base": "10"
      },
      "expected_f64": 1,
      "expected_decimal": "1.000000000000000000000000000000000000000",
      "actual": 1,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-100p0",
      "kind": "interior",
      "inputs": {
        "x": 100,
        "base": "10"
      },
      "expected_f64": 2,
      "expected_decimal": "2.000000000000000000000000000000000000000",
      "actual": 2,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-0p1",
      "kind": "interior",
      "inputs": {
        "x": 0.1,
        "base": "10"
      },
      "expected_f64": -1,
      "expected_decimal": "-1.000000000000000000000000000000000000000",
      "actual": -1,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-2p0",
      "kind": "interior",
      "inputs": {
        "x": 2,
        "base": "10"
      },
      "expected_f64": 0.3010299956639812,
      "expected_decimal": "0.3010299956639811952137388947244930267682",
      "actual": 0.3010299956639812,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-1000p0",
      "kind": "interior",
      "inputs": {
        "x": 1000,
        "base": "10"
      },
      "expected_f64": 3,
      "expected_decimal": "3.000000000000000000000000000000000000000",
      "actual": 3,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-rand-00",
      "kind": "random-interior",
      "inputs": {
        "x": 2.801182637514798,
        "base": "10"
      },
      "expected_f64": 0.4473414258100093,
      "expected_decimal": "0.4473414258100092739585058723437655146953",
      "actual": 0.44734142581000924,
      "error_ulp": 0.5588572521476642,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-rand-01",
      "kind": "random-interior",
      "inputs": {
        "x": 253.04877701188164,
        "base": "10"
      },
      "expected_f64": 2.4032042426988482,
      "expected_decimal": "2.403204242698848223231576019138293834216",
      "actual": 2.4032042426988482,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-rand-02",
      "kind": "random-interior",
      "inputs": {
        "x": 908.8372887797552,
        "base": "10"
      },
      "expected_f64": 2.958486137446016,
      "expected_decimal": "2.958486137446016072265429607028576161399",
      "actual": 2.958486137446016,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-rand-03",
      "kind": "random-interior",
      "inputs": {
        "x": 35.83770308093714,
        "base": "10"
      },
      "expected_f64": 1.5543401669710875,
      "expected_decimal": "1.554340166971087454833292639408778144528",
      "actual": 1.5543401669710875,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-rand-04",
      "kind": "random-interior",
      "inputs": {
        "x": 0.303973263679299,
        "base": "10"
      },
      "expected_f64": -0.5171646135859191,
      "expected_decimal": "-0.5171646135859191150297526899882842741670",
      "actual": -0.5171646135859191,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-rand-05",
      "kind": "random-interior",
      "inputs": {
        "x": 97.26995949052845,
        "base": "10"
      },
      "expected_f64": 1.9879787350073457,
      "expected_decimal": "1.987978735007345707853397117325222524152",
      "actual": 1.9879787350073457,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-rand-06",
      "kind": "random-interior",
      "inputs": {
        "x": 52.516519905953444,
        "base": "10"
      },
      "expected_f64": 1.720295939128846,
      "expected_decimal": "1.720295939128845924988783693898778952831",
      "actual": 1.720295939128846,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-log10-rand-07",
      "kind": "random-interior",
      "inputs": {
        "x": 1033.9184358911507,
        "base": "10"
      },
      "expected_f64": 3.0144862793385983,
      "expected_decimal": "3.014486279338598281718400946709428234484",
      "actual": 3.0144862793385983,
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    }
  ]
}
