Home Developers Evidence math.sum

Public evidence

math.sum

Machine-checked verification for calculation version 1.0.2 · tier engine_tested

CVP: CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance· Declared partitions are sum-exact-decimal, sum-scientific, long-integer, long-decimal, invalid-domain — aligned with published algorithms (exact-decimal vs Neumaier) and Long addition integer/decimal work. O2 checks numeric totals; column-work strings are not an independent numerical claim. · Protocol · Schema · Production report

Declared partition coverage
PASS · 5/5 declared partitions (sum-exact-decimal, sum-scientific, long-integer, long-decimal, invalid-domain)
Versions
Calculation 1.0.2 · CVP protocol 1.0.0-proposed · Evidence 2026-09-16.sources-no-wolfram
Verification revision
2026-09-16.sources-no-wolfram · 3/3 property · digest a295d54714a4

Verification

Legacy regression suite: 31/31 calculation tests · Production surface contract 3/3

Three distinct suites: educational examples on the calculator page, this legacy regression count (31/31 golden + boundary), and the CVP verification suite below. They are not the same number. Property, metamorphic, round-trip, O3, and interface statuses/checks are recorded in the CVP Manifest . SKIP (0/0) means that suite has no published vectors.

    This calculator CURRENT · Public schema 1.0.2 matches · Semantic contract ✓ · Production attested · Public/cache ✓ · Origin ✓

CVP verification suite

Protocol checks from the Evidence Manifest. Distinct from the legacy regression suite above. Verification revision 2026-09-16.sources-no-wolfram. Calculation version 1.0.2. CVP 1.0.0-proposed. 10/10 golden · 6/6 CVP boundary · 9/9 invalid · 3/3 property · 1/1 metamorphic · 6/6 cross-interface · 3/3 CVP contract. digest a295d54714a4. Plain-decimal and long-addition goldens: exact sumStr identity vs independent BigInt rationals. Scientific-notation goldens: ≤2 ULP on value vs the same exact rational rounded to binary64. Tabulated vectors only — not a whole-domain ≤2 ULP guarantee, including unlisted cancellation or mixed-format lists.

  • Golden (oracle-backed) 10 / 10
  • CVP boundary 6 / 6
  • Invalid input 9 / 9
  • Property 3 / 3
  • Metamorphic 1 / 1
  • Cross-interface 6 / 6
  • CVP contract 3 / 3
  • Interfaces PASS · UI (SSR) / REST / MCP
  • Interface claim ui-ssr is query-result HTML, not a live browser session. Error-path engine·REST·MCP 1/1 (status, code, calculation_version). SSR compared on URL-canonical requested calculations; empty query is idle (not an error) and JSON-typed object/array inputs are REST/MCP-only.
  • Assurance Core
  • release artifacts aligned PASS
  • schema valid input executes PASS
  • engine success output validates schema PASS

Fingerprint sha256:e3ac82f4c1bb576707a4d8daf7ff91087d01fa9496dfb8ffbe4bd8f5f1ff7bb0

Input schema sha256:bb22b7968bf29963c5e3912e6a6f9fa90f57f36d2d2830bfc206641805fc7fdb · Output schema sha256:9ad9d0010c16804531f21dc94fea93194a027fe033a3dd265e149e96d4a0c37a · Build-time SHA-256 digests prove published artifacts agree with each other (release_integrity.scope=workspace). Production attestation GETs canonical URLs twice (public/cached view and origin), including Capability HTML, via npm run attest:production --write (published at /.well-known/calculatorx-production-attestation.json) and fails if the public Capability page advertises a different calculation_version. This is artifact consistency, not an independent immutable release log.

Build & scope

Engine identity and declared limitations.

Tool
add
Engine
sum
Engine build
2026-09-16
Evidence core
2026-09-16T06:41:00.884Z
Rendered
2026-09-16T22:03:43.781Z
Last reviewed

Assumptions

  • Tokens are parsed as decimal numbers; scientific notation is allowed in Sum mode only.
  • Units are not parsed. 5 kg + 3 kg is treated as 5 + 3; the sum keeps whatever unit the inputs shared.
  • Thousands separators are not supported. A comma in 7,890 is a value separator (7 + 890), with a non-blocking warning.
  • Long addition pads decimal places with zeros so columns align.
  • Plain decimal tokens are summed in base-10 (exact). Any scientific-notation token switches the list to Neumaier compensated IEEE-754 summation.

Limitations

  • Missing values → MISSING_REQUIRED_INPUT
  • Long mode requires non-negative decimals without scientific notation
  • Too many values → TOO_MANY_VALUES

Sources

Standards and references supporting this tool specification. Methods are listed separately — they are algorithms, not bibliographic sources.

Methods

Algorithms this engine uses. Not external references.

Legacy published checks

Golden and boundary cases from the legacy Evidence JSON. CVP property, metamorphic, round-trip, O3, and interface statuses/checks are recorded in the Manifest — including SKIP when a suite has no vectors.

IDKindStatusDetail
mixedgoldenpassExpected 256.25 · Actual value=256.25 · mode=sum · algorithm=exact-decimal · count=9 · sum=256.25 · sumStr=256.25 · mean=28.47222222222222 · mean_exact=true
simplegoldenpassExpected 30 · Actual value=30 · mode=sum · algorithm=exact-decimal · count=3 · sum=30 · sumStr=30 · mean=10 · mean_exact=true
decimalsgoldenpassExpected 215.063 · Actual value=215.063 · mode=sum · algorithm=exact-decimal · count=3 · sum=215.063 · sumStr=215.063 · mean=71.68766666666666 · mean_exact=true
integersgoldenpassExpected 6 · Actual value=6 · mode=sum · algorithm=exact-decimal · count=3 · sum=6 · sumStr=6 · mean=2 · mean_exact=true
negativesgoldenpassExpected -6 · Actual value=-6 · mode=sum · algorithm=exact-decimal · count=3 · sum=-6 · sumStr=-6 · mean=-2 · mean_exact=true
mixed-signgoldenpassExpected 3 · Actual value=3 · mode=sum · algorithm=exact-decimal · count=3 · sum=3 · sumStr=3 · mean=1 · mean_exact=true
exact-tenthgoldenpassExpected value=0.3 · sumStr=0.3 · algorithm=exact-decimal · Actual value=0.3 · mode=sum · algorithm=exact-decimal · count=2 · sum=0.3 · sumStr=0.3 · mean=0.15 · mean_exact=true
zerosgoldenpassExpected 0 · Actual value=0 · mode=sum · algorithm=exact-decimal · count=3 · sum=0 · sumStr=0 · mean=0 · mean_exact=true
singlegoldenpassExpected 42 · Actual value=42 · mode=sum · algorithm=exact-decimal · count=1 · sum=42 · sumStr=42 · mean=42 · mean_exact=true
scientificgoldenpassExpected value=3000 · algorithm=neumaier · Actual value=3000 · mode=sum · algorithm=neumaier · count=2 · sum=3000 · sumStr=3000 · mean=1500 · mean_exact=false
tinygoldenpassExpected value=3e-12 · algorithm=neumaier · Actual value=3e-12 · mode=sum · algorithm=neumaier · count=2 · sum=3e-12 · sumStr=3e-12 · mean=1.5e-12 · mean_exact=false
cancellation-decimalgoldenpassExpected sumStr=1 · algorithm=exact-decimal · Actual value=1 · mode=sum · algorithm=exact-decimal · count=3 · sum=1 · sumStr=1 · mean=0.3333333333333333 · mean_exact=true
cancellation-neumaiergoldenpassExpected value=1 · algorithm=neumaier · Actual value=1 · mode=sum · algorithm=neumaier · count=3 · sum=1 · sumStr=1 · mean=0.3333333333333333 · mean_exact=false
two-termgoldenpassExpected 15 · Actual value=15 · mode=sum · algorithm=exact-decimal · count=2 · sum=15 · sumStr=15 · mean=7.5 · mean_exact=true
plus-signsgoldenpassExpected 7 · Actual value=7 · mode=sum · algorithm=exact-decimal · count=2 · sum=7 · sumStr=7 · mean=3.5 · mean_exact=true
multilinegoldenpassExpected 6 · Actual value=6 · mode=sum · algorithm=exact-decimal · count=3 · sum=6 · sumStr=6 · mean=2 · mean_exact=true
whitespacegoldenpassExpected 9 · Actual value=9 · mode=sum · algorithm=exact-decimal · count=2 · sum=9 · sumStr=9 · mean=4.5 · mean_exact=true
mixed-separatorsgoldenpassExpected 10 · Actual value=10 · mode=sum · algorithm=exact-decimal · count=4 · sum=10 · sumStr=10 · mean=2.5 · mean_exact=true
thousands-separator-warningboundarypasswarning THOUSANDS_SEPARATOR_AMBIGUITY
leading-zerosgoldenpassExpected sumStr=2 · Actual value=2 · mode=sum · algorithm=exact-decimal · count=2 · sum=2 · sumStr=2 · mean=1 · mean_exact=true
large-scigoldenpassExpected 300000000 · Actual value=300000000 · mode=sum · algorithm=neumaier · count=2 · sum=300000000 · sumStr=300000000 · mean=150000000 · mean_exact=false
long-listgoldenpassExpected 210 · Actual value=210 · mode=sum · algorithm=exact-decimal · count=20 · sum=210 · sumStr=210 · mean=10.5 · mean_exact=true
long-intgoldenpassExpected value=3314 · mode=long · Actual value=3314 · mode=long · algorithm=long-addition · count=3 · sum=3314 · sumStr=3314 · mean=1104.6666666666667 · mean_exact=false
long-decimalsgoldenpassExpected sumStr=215.063 · mode=long · Actual value=215.063 · mode=long · algorithm=long-addition · count=3 · sum=215.063 · sumStr=215.063 · mean=71.68766666666666 · mean_exact=false
long-tenthsgoldenpassExpected sumStr=0.3 · Actual value=0.3 · mode=long · algorithm=long-addition · count=2 · sum=0.3 · sumStr=0.3 · mean=0.15 · mean_exact=false
emptyboundarypassExpected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT
invalid-tokenboundarypassExpected INVALID_NUMBER · Actual INVALID_NUMBER
long-negativeboundarypassExpected VALUE_MUST_BE_NON_NEGATIVE · Actual VALUE_MUST_BE_NON_NEGATIVE
long-scientificboundarypassExpected UNSUPPORTED_FORMAT · Actual UNSUPPORTED_FORMAT
invalid-modeboundarypassExpected INVALID_MODE · Actual INVALID_MODE
boundary-sum-missingboundarypassExpected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT