Skip to main content
QUICK REVIEW

[Paper Review] Uncertainty propagation with functionally correlated quantities

Mosé Giordano|arXiv (Cornell University)|Oct 27, 2016
Advancements in PLL and VCO Technologies1 references20 citations
TL;DR

This paper presents Measurements.jl, a Julia package that enables accurate uncertainty propagation in scientific computations by tracking functional correlations between measured quantities through partial derivatives with respect to underlying independent measurements. By ensuring that operations like x - x or x/x yield zero uncertainty, the method correctly preserves mathematical identities under uncertainty, offering support for real and complex numbers, arbitrary precision, and linear algebra operations with uncertainties.

ABSTRACT

Many uncertainty propagation software exist, written in different programming languages, but not all of them are able to handle functional correlation between quantities. In this paper we review one strategy to deal with uncertainty propagation of quantities that are functionally correlated, and introduce a new software offering this feature: the Julia package Measurements.jl. It supports real and complex numbers with uncertainty, arbitrary-precision calculations, mathematical and linear algebra operations with matrices and arrays.

Motivation & Objective

  • To address the challenge of correctly propagating uncertainty in mathematical operations involving functionally correlated quantities, where standard error propagation fails to preserve exact identities like x - x = 0.
  • To develop a software solution that maintains functional correlation by tracking dependencies back to independent measurements, avoiding incorrect covariance estimates.
  • To provide a high-performance, extensible uncertainty propagation tool in Julia that supports advanced numerical operations such as matrix algebra and arbitrary-precision arithmetic.
  • To enable researchers to perform reliable uncertainty propagation in experimental data analysis without manual derivation of covariance terms.

Proposed method

  • The method tracks all independent measurements from which a derived quantity depends, using partial derivatives of the expression with respect to each independent measurement.
  • Uncertainty is propagated using the simplified error propagation formula (Equation 4), where all covariance terms are zero by construction due to the use of independent variables.
  • The package implements a custom Measurement type that inherits from AbstractFloat, enabling seamless integration with Julia’s type system and mathematical operations.
  • Functional correlation is preserved by storing derivative information with each Measurement object, ensuring that operations like x - x return zero uncertainty.
  • The implementation leverages Julia’s high-performance and metaprogramming features to support complex numbers, arrays, matrices, and arbitrary-precision arithmetic without additional code.
  • The design is inspired by the Python package 'uncertainties' but is fully native to Julia, enabling better performance and type safety.

Experimental results

Research questions

  • RQ1How can uncertainty be correctly propagated in mathematical expressions involving functionally correlated quantities, such as x - x or x/x?
  • RQ2What is an efficient and robust computational strategy to maintain functional correlation during uncertainty propagation without explicitly computing covariance terms?
  • RQ3Can a high-level scientific computing language like Julia be used to implement a production-grade uncertainty propagation package with support for complex numbers, matrices, and arbitrary precision?
  • RQ4How can the Julia type system be leveraged to implement uncertainty propagation with minimal code while ensuring correctness and performance?

Key findings

  • Measurements.jl correctly computes x - x = 0.0 ± 0.0 and x/x = 1.0 ± 0.0, preserving mathematical identities through functional correlation tracking.
  • The package supports arbitrary-precision arithmetic, enabling high-accuracy uncertainty propagation beyond standard floating-point precision.
  • Linear algebra operations on arrays and matrices of uncertain values are natively supported, with correct uncertainty propagation through matrix multiplication and inversion.
  • The implementation achieves performance comparable to C/Fortran due to Julia’s compilation model, while maintaining high-level language usability.
  • The package successfully integrates with third-party Julia packages for physical units and other numerical tools due to Julia’s powerful type system.
  • The method avoids the need for manual covariance computation by using independent measurements as the basis for uncertainty propagation, ensuring correctness by construction.

Better researchstarts right now

From reading papers to final review, dramatically reduce your research time.

No credit card · Free plan available

This review was created by AI and reviewed by human editors.