{
  "capability_id": "math.exponential_growth",
  "tool_id": "exponential-growth",
  "engine": "exponential-growth",
  "calculation_version": "1.0.10",
  "generated_at": "2026-10-28T03:01:57.886Z",
  "engine_build": "2026-10-27",
  "test_count": 20,
  "passed": 20,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "passed": 14,
      "total": 14
    },
    "boundary": {
      "passed": 6,
      "total": 6
    },
    "property": {
      "passed": 0,
      "total": 0
    }
  },
  "engine_tested": true,
  "expert_reviewed": false,
  "internally_reviewed": false,
  "review_kind": null,
  "source_checked": true,
  "reviewed_by": null,
  "reviewer_role": null,
  "last_reviewed": null,
  "expert_review": {
    "status": "optional_not_performed",
    "reviewer": null,
    "scope": [
      "formula",
      "input semantics",
      "assumptions",
      "limitations",
      "sources",
      "tests"
    ],
    "note": "Domain expert review is optional under CVP (CVP-EXP-01). Absence does not block CVP Verified. See Review policy for supplemental domain assurance."
  },
  "internal_review": {
    "status": "not_applicable",
    "reviewer": null
  },
  "page": "https://www.calculatorx.com/calc/math/exponential-growth",
  "api": "https://www.calculatorx.com/api/v1/calc/exponential-growth",
  "schema_input": "https://www.calculatorx.com/schemas/math.exponential_growth.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/math.exponential_growth.output.json",
  "assumptions": [
    "Constant rate over the interval (real populations often need logistic models long-term).",
    "CalculatorX defines the periodic model domain as r > −100% so the growth factor stays positive and inverse/logarithmic solving remains well-defined."
  ],
  "limitations": [
    "Periodic x(t)=x0(1+r/100)^t requires r>-100%; continuous x(t)=x0 exp(k t) uses ratePct=k per time unit, not percent. Signed amplitudes allowed; inverse time/rate require matching nonzero signs.",
    "Provide any three fields or four to compare calculated xt using display quantization. Zero rate/time can make inverses undefined or nonunique. Blank/null fields are missing.",
    "Strict decimal/scientific text up to512 characters; nonzero input rounding tozero rejects NUMERIC_UNDERFLOW. Conflicting aliases/unknown fields/models reject. Output is finite unrounded binary64; overflow/underflow reject.",
    "Independent Decimal1200/1600 fixed vectors use predeclared4e-12 relative budget plus2 subnormal quanta, strictzero/sign/type. Legacy O3 remains separately tested32ULP. No whole-domain or cross-runtime guarantee; inverse conditioning degrades at zero rate/time and amplitude ratios near1.",
    "Typing local; shared URLs, REST and MCP transmit inputs and may enter logs. Native exports retain scalar and provided raw inputs."
  ],
  "boundary_conditions": [
    "Non-finite results are rejected with RESULT_OVERFLOW; nonzero paths rounded to zero are rejected with RESULT_UNDERFLOW. A zero initial value retains the exact zero path.",
    "Scaled evaluation avoids intermediate-factor rejection when the final result is representable. Extreme ratios and tiny rates are not guaranteed accurate across the full domain.",
    "Need three known values to solve the fourth.",
    "All four values enter verify / consistency mode rather than being rejected.",
    "Inputs are strict decimal/scientific text, for example 1705.97; grouped strings such as 1,705.97 are rejected.",
    "Displayed x(t) may match while a small Difference remains — that residual is from the unrounded result.",
    "Periodic r ≤ −100% is rejected as outside the model domain (not because 0^t is undefined for every forward case).",
    "x₀ = 0 yields a trivial zero path."
  ],
  "sources": [
    {
      "title": "NIST DLMF §4.2(i) The Logarithm",
      "section": "Principal logarithm ln z",
      "url": "https://dlmf.nist.gov/4.2",
      "supports": "Inverse solving for t; doubling time t₂=ln 2 / ln(1+r/100); half-life via ln(1/2)",
      "kind": "reference",
      "accessed": "2026-08-25",
      "publisher": "National Institute of Standards and Technology"
    },
    {
      "title": "NIST DLMF §4.2(iii) The Exponential Function",
      "section": "exp z and the real exponential",
      "url": "https://dlmf.nist.gov/4.2",
      "supports": "Continuous model x(t)=x₀ e^(kt)",
      "kind": "reference",
      "accessed": "2026-08-25"
    },
    {
      "title": "NIST DLMF §4.2(iv) Powers",
      "section": "Principal value z^a = exp(a ln z)",
      "url": "https://dlmf.nist.gov/4.2",
      "supports": "Periodic model x(t)=x₀(1+r/100)^t as a real power of the positive growth factor 1+r/100",
      "kind": "reference",
      "accessed": "2026-08-25"
    }
  ],
  "methods": [],
  "fingerprint": "sha256:68947c81a7e1e01ead66fea13c45ac50d22f17a830a8bb2bc160e954bffeb57d",
  "tier": "engine_tested",
  "verification": {
    "tests": {
      "passed": 20,
      "total": 20,
      "golden": 14,
      "boundary": 6,
      "property": 0
    },
    "contract_checks": {
      "passed": 29,
      "total": 29
    }
  },
  "evidence_core_generated_at": "2026-10-27T05:26:03.915Z",
  "rendered_at": "2026-10-28T03:01:57.886Z",
  "release_integrity": {
    "status": "verified",
    "scope": "workspace",
    "production_attestation_required": true,
    "calculation_version": "1.0.10",
    "artifacts": {
      "engine": "1.0.10",
      "page": "1.0.10",
      "capability": "1.0.10",
      "evidence": "1.0.10",
      "input_schema": "1.0.10",
      "output_schema": "1.0.10",
      "mcp_contract": "1.0.10"
    },
    "digests": {
      "input_schema_sha256": "13a1effa428dd818fc8ef364cfff535cb4df0c12eb408082956e6754db077e94",
      "output_schema_sha256": "385313ac973965b21ef22040ca11ef747adfce7b6f7f5fce800529c78abfd27e",
      "evidence_sha256": "609dcd389f6dcf646da380f814a86b353ece0c274944ff68a3c51dc1c99740fc",
      "evidence_core_sha256": "609dcd389f6dcf646da380f814a86b353ece0c274944ff68a3c51dc1c99740fc",
      "capability_sha256": "0a55ad8a0d910e30496dbdb3129f1865fbd3f6754d72f9d1366ca4130be39094",
      "engine_sha256": "c6ebd8436f08b413e1ac6317b2d48550f2e6639a90dff254244e3aa562158b8d",
      "mcp_contract_sha256": "5898d9426fe62990b5c5eed0b7ac18076acb83b29b083b5b4dd52f28efe79ae5"
    },
    "contract_checks": {
      "total": 29,
      "passed": 29,
      "failed": 0,
      "items": [
        {
          "id": "release-artifacts-aligned",
          "status": "pass",
          "detail": "1.0.10"
        },
        {
          "id": "schema-output-required-declared",
          "status": "pass"
        },
        {
          "id": "schema-valid-input-executes",
          "status": "pass"
        },
        {
          "id": "engine-success-output-validates-schema",
          "status": "pass"
        },
        {
          "id": "schema-rejects-incomplete-input",
          "status": "pass"
        },
        {
          "id": "input-schema-declares-xt",
          "status": "pass"
        },
        {
          "id": "input-schema-accepts-inverse-time",
          "status": "pass",
          "detail": "[]"
        },
        {
          "id": "input-schema-accepts-verify",
          "status": "pass",
          "detail": "[]"
        },
        {
          "id": "input-schema-rejects-two-fields",
          "status": "pass"
        },
        {
          "id": "output-schema-defines-consistency",
          "status": "pass"
        },
        {
          "id": "input-schema-forward",
          "status": "pass"
        },
        {
          "id": "rest-forward-output-schema",
          "status": "pass"
        },
        {
          "id": "rest-forward-consistency",
          "status": "pass"
        },
        {
          "id": "input-schema-forward-continuous",
          "status": "pass"
        },
        {
          "id": "rest-forward-continuous-output-schema",
          "status": "pass"
        },
        {
          "id": "rest-forward-continuous-consistency",
          "status": "pass"
        },
        {
          "id": "input-schema-inverse-time",
          "status": "pass"
        },
        {
          "id": "rest-inverse-time-output-schema",
          "status": "pass"
        },
        {
          "id": "rest-inverse-time-consistency",
          "status": "pass"
        },
        {
          "id": "input-schema-inverse-x0",
          "status": "pass"
        },
        {
          "id": "rest-inverse-x0-output-schema",
          "status": "pass"
        },
        {
          "id": "rest-inverse-x0-consistency",
          "status": "pass"
        },
        {
          "id": "input-schema-inverse-rate",
          "status": "pass"
        },
        {
          "id": "rest-inverse-rate-output-schema",
          "status": "pass"
        },
        {
          "id": "rest-inverse-rate-consistency",
          "status": "pass"
        },
        {
          "id": "input-schema-verify",
          "status": "pass"
        },
        {
          "id": "rest-verify-output-schema",
          "status": "pass"
        },
        {
          "id": "rest-verify-consistency",
          "status": "pass"
        },
        {
          "id": "rest-success-payload-validates-schema",
          "status": "pass"
        }
      ]
    },
    "report": "https://www.calculatorx.com/.well-known/calculatorx-release-integrity.json"
  },
  "tests": [],
  "disclosure": {
    "policy": "calculatorx-public-evidence-v1",
    "full_validation": "private",
    "representation": "summary"
  }
}
