I’m happy to announce the release of the version 0.4.0 if Measurements.jl
, an error propagation package for physical measurements, carefully taking functional correlation between them into account. This library supports real and complex numbers with uncertainty, arbitrary precision calculations, operations with arrays, and much more. As usual, the complete documentation is available at Measurements.jl — Measurements.jl 0.4.1-dev documentation.
These are the new in the latest version:
Breaking Changes
- Support for Julia 0.4 and 0.5 was dropped.
value
anduncertainty
functions are no more exported.Measurements.gradient
function has been removed. Use the vectorized functionMeasurements.derivative.(x, array)
instead.
Improvements
- There were several performance improvements, both in speed and memory usage. These improvements are more evident for simple operations like addition and subtraction (now these operations are 2-3 times faster than in v0.3.0). In addition, the overhead of operations with arrays of
Measurement
s and complexMeasurement
s was greatly reduced by avoiding useless conversions (now summing an array is 100 times faster than in v0.3.0).
New Features
quadgk
function fromQuadGK.jl
package is extended to supportMeasurement
objects as endpoints of integration (#8). Note that only the case of two real endpoints is supported.- Real
Measurement
objects can be printed with"text/x-tex"
and"text/x-latex"
MIME types.\pm
TeX macro is used to render the±
sign.- A new
parse
method is provided, to parse a string toMeasurement{Float64}
. This is the same as callingmeasurement
with a string argument.
In particular, I’ve worked towards making calculations as fast as possible, removing some useless steps. A few microbenchmarks are presented at Performance — Measurements.jl 0.4.0 documentation.
I also managed to enable computation of numerical integrals with Measurement
objects as integration bounds using QuadGK
(which already supports integration of custom Julia types as integrands). I couldn’t find other similar packages in other languages with this feature. For instance, this new feature allows for cosmological calculations involving numbers with uncertainties (like cosmological parameters measured by the experiments): Using Measurements, including errors in cosmology constants and redshift · Issue #7 · JuliaAstro/Cosmology.jl · GitHub. Other examples of out-of-the-box integration with third-party packages (like numerical and automatic differentiation, and packages for numbers with physical units) are shown at Examples — Measurements.jl 0.4.0 documentation. The great Julia type system is instrumental in making all this work so easily!