Uncertainty Propagation Calculator
Propagate measurement uncertainty using GUM linear propagation, covariance, uncertainty budgets, or Monte Carlo simulation. Optional correlation ρ and coverage factor k → U. Runs locally in your browser.
Trust summary CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance · Linear GUM: sum, difference, product, quotient, RSS, sensitivity, budget. Correlation matrices must be PSD (singular PSD allowed). O3 mpmath (80 dps) tabulated linear u_c. Monte Carlo: O2-B seeded mulberry32+Box-Muller replay of y_mean/u_c/percentiles (≤2 ULP) for sum, difference, product, quotient, correlated normal, and budget/rectangular; linear_u_c vs first-order GUM.
- Input interpretation
- Enter values to calculate.
- Result
- —
- Verified scope
- Linear GUM: sum, difference, product, quotient, RSS, sensitivity, budget. Correlation matrices must be PSD (singular PSD allowed). O3 mpmath (80 dps) tabulated linear u_c. Monte Carlo: O2-B seeded mulberry32+Box-Muller replay of y_mean/u_c/percentiles (≤2 ULP) for sum, difference, product, quotient, correlated normal, and budget/rectangular; linear_u_c vs first-order GUM.
- Assurance
- Engineering
- Declared partition coverage
- PASS · 9/9 declared partitions (sum, difference, product, quotient, rss, sensitivity, budget, montecarlo, invalid-domain) · Matrix
- Deferred
- Adaptive MCM, arbitrary PDFs, and the full JCGM 101 validation procedure. Budget sensitivity-coefficient dimensional algebra is not automatically verified. Correlated non-normal MC remains out of O2. O3 does not cover Monte Carlo.
- Numerical scope
- Published modes: linear GUM (sum, difference, product, quotient, RSS, sensitivity, budget) and seeded Monte Carlo replay of y_mean/u_c/percentiles. Not a full JCGM 101 validation procedure. RNG: mulberry32; normal sampler: Box-Muller. ≤2 ULP vs O3 applies only to the published tabulated linear GUM vectors (sum, difference, ρ=1 difference, product, quotient, RSS, sensitivity, 3×3 PSD, singular PSD, budget). It is not a whole-domain guarantee and does not cover Monte Carlo.
- Known limitations
- Core CVP does not include live graph, viewport, or pointer interaction.
- Model
- Combined standard uncertainty (optional correlations) and optional expanded U = k·u_c for binary ops, sensitivity, or RSS.
- Scope
- Default uncorrelated (rho=0); optional correlations when provided.
- Verification
- Engine tested · Source checked · v1.9.8 · CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance · Linear GUM: sum, difference, product, quotient, RSS, sensitivity, budget. Correlation matrices must be PSD (singular PSD allowed). O3 mpmath (80 dps) tabulated linear u_c. Monte Carlo: O2-B seeded mulberry32+Box-Muller replay of y_mean/u_c/percentiles (≤2 ULP) for sum, difference, product, quotient, correlated normal, and budget/rectangular; linear_u_c vs first-order GUM.· View Manifest · CVP overview · Specification
- Versions
- Calculation 1.9.8 · CVP protocol 1.0.0-proposed · Evidence 2026-09-16.seeded-mc-o3
- Verification revision
- 2026-09-16.seeded-mc-o3 · 29/29 property · digest 77cad1dafb2f
- Legacy regression
- 88/88 tests · Production surface contract 8/8
- Trust layers
- Verification VERIFIED · Production CURRENT · overall VERIFIED
- Reference
- O1 model · O3 expected_values · O3 numerical_behavior · O2 expected_values · O2 numerical_behavior
- Interfaces
- PASS · UI (SSR) / REST / MCP
- Supplemental domain review
- Internal · Pass · metrology-engineer
- Named expert review
- Not performed
- CVP suite
- 18/18 golden · 47/47 CVP boundary · 29/29 invalid · 29/29 property · 10/10 O3 · 6/6 cross-interface · 8/8 CVP contract · Manifest
- Sources
- JCGM 100:2008 — Evaluation of measurement data (GUM)
- JCGM 100:2008/Amd.1:2026 — Nonlinearity in measurement models
- JCGM GUM-6:2020 — Developing and using measurement models
- JCGM 101:2008 — Propagation of distributions using a Monte Carlo method
- NIST Technical Note 1297
- NIST Guide to the SI (SP 811)
- Evidence
- 11 legacy golden · 48 legacy boundary · legacy regression suite · 18/18 oracle-backed golden · 29/29 invalid · Artifact integrity PASS · CalculatorX engineering review
- Semantic contract
- PASS
Full verification
Formulas
Core equations used by this calculator.
How to use
Choose a mode
Binary ops for two quantities; sensitivity when you know ∂f/∂xᵢ; RSS to combine uncertainties alone.
Enter values and standard uncertainties
Use the same units for a value and its u. Uncertainties are ≥ 0. Product allows a=0 or b=0; quotient requires b ≠ 0.
Read y and u_c
Relative uncertainty u_rel = |u_c/y| is shown only when y ≠ 0.
Example calculations
Common configurations with formula and result.
Sum
a = 100 ± 0.1 · b = 50 ± 0.2
Product
a = 10 ± 0.1 · b = 5 ± 0.05
Product at a = 0
a = 0 ± 0.1 · b = 5 ± 0.05
Sensitivity
c = [2, 3] · u = [0.1, 0.2]
RSS
u = [0.3, 0.4]
Quick reference
Common values at a glance.
| Mode | y | u_c |
|---|---|---|
| sum | a+b | √(ua²+ub²) |
| difference | a−b | √(ua²+ub²) |
| product | a·b | √((b·ua)²+(a·ub)²) |
| quotient | a/b | √((ua/b)²+(a·ub/b²)²) |
| sensitivity | (optional) | √Σ(cᵢ·uᵢ)² |
| rss | — | √Σuᵢ² |
| budget | Σ cᵢ xᵢ (if x set) | √Σ(cᵢ uᵢ)² (+ cov) |
| montecarlo | sample mean | sample std (+ percentiles) |
Uncertainty Propagation calculator specification
Version 1.9.8 · Engine tested · Supplemental domain review · Internal · 2026-08-10
- Engine tested 88/88 tests · Production surface contract 8/8
- Supplemental domain review Internal · Pass · metrology-engineer · 2026-08-10
- Named expert review Not performed
- Calculation version 1.9.8
Review policy · Evidence · Reviewed by CalculatorX engineering review (metrology-engineer)
- Definition
- For a measurable y = f(x₁,…,xₙ) with standard uncertainties u(xᵢ), the combined standard uncertainty is u_c(y) = √[Σ (∂f/∂xᵢ · u(xᵢ))² + 2 Σ_{i<j} (∂f/∂xᵢ)(∂f/∂xⱼ) u(xᵢ) u(xⱼ) ρᵢⱼ] (GUM first-order). Optional coverage factor k yields expanded U = k·u_c. Binary shortcuts and RSS are provided for common cases.
- What it calculates
- Combined standard uncertainty (optional correlations) and optional expanded U = k·u_c for binary ops, sensitivity, or RSS.
- Inputs
- mode: sum|difference|product|quotient|sensitivity|rss|budget|montecarlo
- Binary: a, ua, b, ub; optional unit_a/unit_b, rho, k, nua/nub, type_a/type_b
- sensitivity: coefficients[], uncertainties[]; optional correlations, dof[], types[], labels[], y, unit, k
- rss: uncertainties[]; optional dof[], types[], labels[], y, unit, k (no correlations)
- budget: components[{name,u,c?,type?,nu?,distribution?,x?}]; optional correlations (index or name), y, unit, k/confidence
- montecarlo: model sum|difference|product|quotient + a,ua,b,ub[,rho] OR components with x; N, seed; optional confidence/k
- Outputs
- u_c — combined standard uncertainty (machine / raw precision)
- y — result (binary) or optional y (machine precision)
- u_rel — |u_c/y| when y ≠ 0; null when y = 0
- reported — { u_c, y, significant_digits: 2, decimal_places, formatted_y, formatted_u_c, optional k, U, formatted_U } human-facing rounding (strings keep trailing zeros JSON numbers cannot)
- unit — resolved unit label (optional)
- rho / correlations — correlation used (when applicable)
- k, U, k_source, confidence — fixed k or Student-t auto-k from confidence + νeff
- contributions[], largest — diagonal variance share of u_c²
- nu_eff / nu_eff_infinite — Welch–Satterthwaite when dof/nua/nub provided
- Formula
u_c = √[Σ (c_i u_i)² + 2 Σ cov]; optional U = k·u_c- Assumptions
- Default uncorrelated (rho=0); optional correlations when provided.
- Linear propagation assumes a local first-order approximation is adequate. For significant model nonlinearity, consider higher-order treatment (JCGM 100:2008/Amd.1:2026) or Monte Carlo propagation (JCGM 101:2008).
- Units
- Quantity Engine v1.1: SI-prefix labels + electrical derived rewrites
- sum/difference: same dimension → auto-convert (1000 mV + 2 V → 3 V); different dimension → UNIT_MISMATCH
- product: V×A → VA; A×Ω → V; other pairs → A·B
- quotient: V/A → Ω; mV/mA → Ω; same SI dimension → '1'; W/A → V
- Opaque labels (e.g. LSB) still require exact match for sum/difference
- Budget component units remain label/metadata for now (c may carry dimension)
- y / u_c / U are reported in the resolved output unit; a/b echo inputs; quantity.converted when scaled
- Boundary conditions
- Missing required fields → MISSING_REQUIRED_INPUT
- Negative ua/ub → VALUE_MUST_BE_NON_NEGATIVE
- Unknown mode → INVALID_MODE
- Quotient with b=0 → DIVISION_BY_ZERO
- Product with a=0 or b=0 is allowed (absolute form); u_rel omitted when y=0
- sum/difference with unit_a ≠ unit_b → UNIT_MISMATCH
- rho ∉ [-1,1] → VALUE_OUT_OF_RANGE; k≤0 → VALUE_MUST_BE_POSITIVE
- RSS with correlations → INVALID_INPUT
- confidence with nonzero ρ/correlations → CORRELATED_DOF_NOT_SUPPORTED
- Monte Carlo rectangular + correlation → CORRELATED_NON_NORMAL_MC_NOT_SUPPORTED
- Monte Carlo quotient with >5% near-zero denominator draws → MONTECARLO_UNSTABLE
- n×n correlation matrix not positive semidefinite → CORRELATION_MATRIX_NOT_PSD (pairwise |ρ|≤1 is not sufficient for 3+ variables; singular PSD is allowed)
- Duplicate unordered (i,j) pair → DUPLICATE_CORRELATION; conflicting ρ for the same pair → CONFLICTING_CORRELATION
- Example
- sum, a=100±0.1, b=50±0.2 → y=150, u_c≈0.2236 (reported u_c=0.22)
- Validation cases
19 published on this page · 88/88 tests · Production surface contract 8/8 · View evidence
- sum, 100±0.1, 50±0.2 → y=150, u_c≈0.2236, reported.u_c=0.22
- product, 10±0.1, 5±0.05 → y=50, u_c≈0.7071
- product, a=0±0.1, b=5±0.05 → y=0, u_c=0.5
- quotient, a=0±0.1, b=5±0.05 → y=0, u_c=0.02
- sensitivity c=[2,3] u=[0.1,0.2] → u_c≈0.6325
- rss [0.3,0.4] → u_c=0.5
- quotient b=0 → error DIVISION_BY_ZERO
- mode=bayesian → error INVALID_MODE
- montecarlo sum, N=20000, seed=42 → u_c ≈ linear √0.05
- sum, ρ=1, 100±0.1, 50±0.2 → u_c=0.3
- sum, k=2 → U≈0.4472, reported.U=0.45
- sensitivity c=[1,1] u=[0.1,0.2] corr ρ01=1 → u_c=0.3
- sum, nua=9, nub=∞ → nu_eff=225
- rss u=[0.1], dof=[9], confidence=0.95 → k≈2.262, k_source=student_t
- budget Vref±0.002 + drift±0.001 → y=5, u_c≈0.002236
- sum, 1000 mV + 2 V → y=3 V (Quantity Engine SI-prefix)
- quotient, 10 V / 2 A → y=5 Ω
- sensitivity 3×3 ρ=0.9/0.9/−0.9 → error CORRELATION_MATRIX_NOT_PSD
- sensitivity 3×3 all ρ=1 → u_c=0.3 (singular PSD)
- Sources
- JCGM 100:2008 — Evaluation of measurement data (GUM) — Law of propagation of uncertaintySupports: u_c² = Σ (∂f/∂xᵢ)² u²(xᵢ) for uncorrelated inputs
- JCGM 100:2008/Amd.1:2026 — Nonlinearity in measurement models — Amendment 1Supports: First-order linear propagation may be inadequate when the measurement model is significantly nonlinear
- JCGM GUM-6:2020 — Developing and using measurement models — Measurement modellingSupports: Guidance on constructing measurement models for uncertainty evaluation
- JCGM 101:2008 — Propagation of distributions using a Monte Carlo method — GUM Supplement 1Supports: Methodological reference for the implemented Monte Carlo subset (normal/rectangular, seeded sampling, percentile intervals); not adaptive MCM, arbitrary PDFs, or full JCGM 101 validation procedure
- NIST Technical Note 1297 — Guidelines for evaluating and expressing uncertaintySupports: Combined standard uncertainty practice; reporting of u_c
- NIST Guide to the SI (SP 811) — Expression of uncertainty with SI quantitiesSupports: Unit-consistent reporting of results and uncertainties
- JCGM 100:2008 — Evaluation of measurement data (GUM) — Law of propagation of uncertainty
- Last reviewed
- 2026-08-10
- Reviewed by
- CalculatorX engineering review (metrology-engineer)
- Calculation version
- 1.9.8
Background
Interpretation and common distinctions.
Propagate standard uncertainties with GUM linear propagation, covariance, uncertainty budgets, or Monte Carlo (JCGM 101) — binary ops, sensitivity/RSS, named budget, or MC sampling (optional correlations, νeff / percentile coverage → U).
Default example (sum): 100 ± 0.1 and 50 ± 0.2 → y = 150, u_c ≈ 0.2236.
Supported and not supported
Supported
- Binary sum / difference / product / quotient (absolute first-order forms)
- Optional binary correlation ρ and sensitivity
correlations[] - Sensitivity-coefficient form with covariance terms
- Named budget components (Type A/B + optional x → y=Σ c x)
- Interactive Budget Workspace table (add/remove rows + live contribution ranking)
- Monte Carlo (normal/rectangular draws; seedable)
- RSS of uncertainties alone (uncorrelated)
- Optional coverage factor k, or confidence → Student-t k from nu(eff) → U = k · u_c
- Diagonal contributions + largest contributor; optional Welch–Satterthwaite nu(eff)
- Optional Type A/B labels (metadata)
- Quantity Engine (v1.1): SI-prefix conversion + electrical derived rewrites (1000 mV + 2 V → 3 V; V/A → Ω; A·Ω → V; V×A → VA)
- API via
engineering.uncertainty.propagate
Not supported
- Adaptive or MCMC samplers; arbitrary PDFs; full JCGM 101 validation procedure
- Student-t auto-k (confidence) when inputs are correlated — use fixed k
- Correlated Monte Carlo with non-normal (e.g. rectangular) marginals
- Quotient Monte Carlo when >5% of draws are near a zero denominator (
MONTECARLO_UNSTABLE) - Full SI quantity algebra (no temperature offsets, no Budget multi-dimension unit algebra, no custom registries)
Agent / API notes
Capability id: engineering.uncertainty.propagate · tool id: uncertainty-propagate · pin calculation_version: 1.9.8.
Share URLs keep active-mode inputs only (hidden Budget/MC fields are not written; stale keys such as uncMcDist / distribution are cleared). Trust tier is internally reviewed (CalculatorX metrology review), not named external expert verification.
For Budget / Monte Carlo (or audit), use Freeze snapshot link → POST /api/v1/share → /s/{id} immutable envelope (calculation_version + inputs + frozen result).
Public Agent Input Schema (1.9.8): mode-discriminated oneOf; Monte Carlo is nested as binary (model,a,ua,b,ub) or budget (components with x); Budget correlations[].i/j accept index or name; components use canonical u / c / x only (runtime still accepts legacy aliases); nua/nub allow null for ν→∞.
Stable error codes: MISSING_REQUIRED_INPUT, INVALID_NUMBER, VALUE_MUST_BE_NON_NEGATIVE, VALUE_MUST_BE_POSITIVE, VALUE_OUT_OF_RANGE, DIVISION_BY_ZERO, UNIT_MISMATCH, INVALID_MODE, INVALID_INPUT, CORRELATED_DOF_NOT_SUPPORTED, CORRELATED_NON_NORMAL_MC_NOT_SUPPORTED, MONTECARLO_UNSTABLE, CORRELATION_MATRIX_NOT_PSD, DUPLICATE_CORRELATION, CONFLICTING_CORRELATION.
Input schema is mode-discriminated (oneOf): binary modes require a,ua,b,ub (optional rho, k); sensitivity requires coefficients[] + uncertainties[] (optional correlations[{i,j,rho}], k); rss requires uncertainties[] (optional k; rejects correlations).
Optional unit_a / unit_b use Quantity Engine v1.1 (SI-prefix conversion + electrical derived rewrites such as V/A→Ω). Sum/difference of different dimensions still returns UNIT_MISMATCH. When prefixes are converted, quantity.converted is true and y/u_c are in the resolved unit.
API returns machine-precision u_c / y / optional U, plus reported (2 significant digits) for display. JSON numbers cannot keep trailing zeros, so reported.formatted_y / formatted_u_c / decimal_places replay the audit-report strings (e.g. "150.00" / "0.22").
For sensitivity/rss modes, send JSON arrays in the POST body (coefficients, uncertainties, correlations).
Related tools
Other calculators in this family: Tolerance / Uncertainty Workspace, Ohm's Law, Voltage divider, MOSFET conduction loss .
Frequently asked questions
Key distinctions behind the calculation.
What is uncertainty propagation?
It estimates how input standard uncertainties combine into the uncertainty of a calculated result, usually via a linear (GUM) model.
What does GUM mean?
Guide to the Expression of Uncertainty in Measurement — the standard framework for evaluating and combining uncertainties.
When should I use sensitivity mode?
When y = f(xᵢ) and you know (or approximate) the partial derivatives cᵢ = ∂f/∂xᵢ. Then u_c = √Σ (cᵢ·uᵢ)².
Are inputs assumed independent?
By default yes (ρ=0). Binary modes accept optional rho (−1…1). Sensitivity/budget accept correlations: [{i,j,rho}] (budget also allows component names). RSS remains uncorrelated.
What is Monte Carlo mode?
JCGM 101-style sampling: draw inputs from normal or rectangular distributions, evaluate the model N times, and report the sample mean, standard deviation u_c, and percentiles. Optional correlation via Cholesky is supported for normal marginals only (rectangular + correlation → CORRELATED_NON_NORMAL_MC_NOT_SUPPORTED). Use confidence for an empirical coverage interval, or k for U=k·u_c. Seed makes runs reproducible.
What is budget mode?
A named-component form of sensitivity. The Budget Workspace table lets you add/remove rows (name, x, standard uncertainty u, c, Type A/B, ν, distribution). Enter u already as a standard uncertainty (not a raw half-width). Distribution is metadata in linear mode; Monte Carlo uses it for draws. If every component has x, y = Σ cᵢ xᵢ. After calculate, contributions are ranked in-panel. Correlations may use names.
What is νeff?
Optional Welch–Satterthwaite effective degrees of freedom from dof[] (sensitivity/rss) or nua/nub (binary). Infinity/null means ν→∞. Pair with confidence to auto-select Student-t k. Nonzero ρ/correlations omit νeff and reject confidence (CORRELATED_DOF_NOT_SUPPORTED) — use a fixed k.
Does this return expanded uncertainty?
Yes. Provide k > 0, or set confidence (e.g. 0.95) to auto-select Student-t k from νeff (missing/∞ νeff uses the normal quantile). Do not set both k and confidence. Confidence with nonzero ρ/correlations returns CORRELATED_DOF_NOT_SUPPORTED.
Can product or quotient use a zero value?
Product allows a=0 or b=0 (absolute first-order form). Quotient allows a=0 but rejects b=0 with DIVISION_BY_ZERO. Relative uncertainty u_rel is omitted when y=0.
What if mode is unknown?
The API returns INVALID_MODE. Use sum, difference, product, quotient, sensitivity, rss, budget, or montecarlo.