The uncertainties
package allows calculations with values that have
uncertaintes, such as (2 +/ 0.1)*2 = 4 +/ 0.2. uncertainties
takes the
pain and complexity out of error propagation and calculations of values with
uncertainties. For more information, see https://uncertainties.readthedocs.io/
>>> from uncertainties import ufloat
>>> x = ufloat(2, 0.25)
>>> x
2.0+/0.25
>>> square = x**2
>>> square
4.0+/1.0
>>> square.nominal_value
4.0
>>> square.std_dev # Standard deviation
1.0
>>> square  x*x
0.0 # Exactly 0: correlations taken into account
>>> from uncertainties.umath import sin, cos # and many more.
>>> sin(1+x**2)
0.95892427466313845+/0.2836621854632263
>>> print (2*x+1000).derivatives[x] # Automatic calculation of derivatives
2.0
>>> from uncertainties import unumpy # Array manipulation
>>> varr = unumpy.uarray([1, 2], [0.1, 0.2])
>>> print(varr)
[1.0+/0.1 2.0+/0.2]
>>> print(varr.mean())
1.50+/0.11
>>> print(unumpy.cos(varr))
[0.540302305868+/0.0841470984808 0.416146836547+/0.181859485365]
 Transparent calculations with uncertainties: Liittle or no modification of existing code is needed to convert calculations of floats to calculations of values with uncertainties.

Correlations between expressions are correctly taken into
account. Thus,
xx
is exactly zero. 
Most mathematical operations are supported, including most
functions from the standard math module (sin,...). Comparison
operators (
>
,==
, etc.) are supported too.  Many fast operations on arrays and matrices of numbers with uncertainties are supported.
 Extensive support for printing numbers with uncertainties (including LaTeX support and prettyprinting).
 Most uncertainty calculations are performed analytically.
 This module also gives access to the derivatives of any mathematical expression (they are used by error propagation theory, and are thus automatically calculated by this module).
To install uncertainties, use:
pip install uncertainties
To upgrade from an older version, use:
pip install upgrade uncertainties
Further details are in the online documentation.
The GitHub master
branch is the latest development version, and is intended
to be a stable prerelease version. It will be experimental, but should pass
all tests.. Tagged releases will be available on GitHub, and correspond to the
releases to PyPI. The GitHub ghpages
branch will contain a stable test version
of the documentation that can be viewed at
https://lmfit.github.io/uncertainties/. Other Github branches should be
treated as unstable and inprogress development branches.
This package and its documentation are released under the Revised BSD License.
This package was created back around 2009 by Eric O. LEBIGOT.
Ownership of the package was taken over by the lmfit GitHub organization in 2024.