Home Developers Evidence math.tan

Public evidence

math.tan

Machine-checked verification for calculation version 1.0.4 · tier engine_tested

CVP: CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance· deg|rad; pole classification / snap / |y| cleanup are documented numerical policies · Protocol · Schema · Production report

Declared partition coverage
PASS · 3/3 declared partitions (tan, invalid-domain, xcal)
Versions
Calculation 1.0.4 · CVP protocol 1.0.0-proposed · Evidence 2026-09-08.policy
Verification revision
2026-09-08.policy · 5/5 property · digest 494caf2c4f61

Verification

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

Three distinct suites: educational examples on the calculator page, this legacy regression count (25/25 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.4 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-08.policy. Calculation version 1.0.4. CVP 1.0.0-proposed. 4/4 golden · 10/10 CVP boundary · 8/8 invalid · 5/5 property · 4/4 metamorphic · 4/4 round-trip · 16/16 O3 · 1/1 cross-interface · 11/11 cross-calculator · 4/4 URL→result→graph · 1/1 CVP contract. digest 494caf2c4f61. ≤2 ULP vs O3 applies to the 16 published tabulated vectors (common angles away from poles plus 8 seeded random angles in (−50°, 50°)). It is not a guarantee over the entire real line, including poles, huge angles, or unlisted neighborhoods of zeros.

  • Golden (oracle-backed) 4 / 4
  • CVP boundary 10 / 10
  • Invalid input 8 / 8
  • Property 5 / 5
  • Metamorphic 4 / 4
  • Round-trip 4 / 4
  • O3 high-precision 16 / 16
  • Cross-interface 1 / 1
  • Cross-calculator 11 / 11
  • URL → result → graph 4 / 4
  • CVP contract 1 / 1
  • Interfaces PASS · UI (SSR) / REST / MCP / URL→result→graph
  • Interface claim Success 1/1. Integration: URL → SSR result → Live graph current point (4/4). Hydration/slider/history are URL-canonical contracts, not a live browser session.
  • Assurance Core
  • release artifacts aligned PASS
  • schema valid input executes PASS
  • engine success output validates schema PASS

Fingerprint sha256:672b0a252bc3ec1ae680516503c13aaddd3a8e304d3c94d640505752aa2b42cd

Input schema sha256:a145c86bf4295643a515b07cddf823049424a88c3a7fc25e463dfc92773671b6 · Output schema sha256:c6e4f75fa48f8b655778eb2014eee65632aa82db1d919d28c89fbd08e417449c · 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
tan
Engine
tan
Engine build
2026-09-10
Evidence core
2026-09-10T22:48:17.762Z
Rendered
2026-09-16T22:03:43.779Z
Last reviewed

Assumptions

  • Real tangent only. Inverse is Arctan, not this published engine.
  • Documented pole classification: UNDEFINED when distance to 90° + 180°k is < 1e-12°. That threshold is a numerical classification policy, not a claim that those inputs are mathematically exact odd multiples of 90°. |cos(θ)| is not used as a pole test.
  • If the input is not classified as a pole and distance-to-pole < 0.01°, the engine returns a finite tan(θ) with warnings: [{ code: NEAR_SINGULARITY }]. status remains ok.
  • Documented common-angle snap: after reducing mod 360°, an input within 1e-12° of a listed common angle (0, ±30, ±45, ±60, …) is replaced by the algebraic value (0, ±1/√3, ±1, ±√3). This is a snap policy, not mathematical exactness. Nearby inputs such as 60.00000005° keep IEEE-754 Math.tan.
  • Documented cleanup: if no snap applies and |y| < 1e-12, the engine rewrites y to 0. That changes the IEEE-754 result for some non-zero inputs; it is a cleanup policy, not a mathematical identity.

Limitations

  • Exact poles (90° + 180°k) → UNDEFINED
  • Within 0.01° of a pole → finite value with warnings NEAR_SINGULARITY
  • Missing theta → MISSING_REQUIRED_INPUT

Sources

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

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
deg-45goldenpassExpected 1 · Actual 1
deg-30goldenpassExpected 0.5773502691896257 · Actual 0.5773502691896258
deg-60goldenpassExpected 1.7320508075688772 · Actual 1.7320508075688772
deg-0goldenpassExpected 0 · Actual 0
deg-neg-45goldenpassExpected -1 · Actual -1
deg-180goldenpassExpected 0 · Actual 0
deg-225goldenpassExpected 1 · Actual 1
deg-360goldenpassExpected 0 · Actual 0
periodicity-405goldenpassExpected 1 · Actual 1
deg-89-finitegoldenpassExpected 57.289961630759876 · Actual 57.289961630759876
deg-91-finitegoldenpassExpected -57.28996163075955 · Actual -57.28996163075955
deg-90boundarypassExpected UNDEFINED · Actual UNDEFINED
deg-270boundarypassExpected UNDEFINED · Actual UNDEFINED
deg-neg-90boundarypassExpected UNDEFINED · Actual UNDEFINED
rad-pi-4goldenpassExpected 1 · Actual 1
rad-pi-2boundarypassExpected UNDEFINED · Actual UNDEFINED
rad-neg-pi-4goldenpassExpected -1 · Actual -1
rad-pigoldenpassExpected 0 · Actual 0
near-pole-89.99999995boundarypasswarning NEAR_SINGULARITY
near-pole-90.00000005boundarypasswarning NEAR_SINGULARITY
no-silent-snap-60.00000005goldenpassExpected 1.7320508110595352 · Actual 1.7320508110595352
missing-thetaboundarypassExpected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT
theta-abcboundarypassExpected INVALID_NUMBER · Actual INVALID_NUMBER
invalid-unitboundarypassExpected INVALID_UNIT · Actual INVALID_UNIT
boundary-tan-poleboundarypassExpected UNDEFINED · Actual UNDEFINED