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 https://measurementsjl.readthedocs.io/en/latest/.

These are the new in the latest version:

## Breaking Changes

- Support for Julia 0.4 and 0.5 was dropped.
`value`

and`uncertainty`

functions are no more exported.`Measurements.gradient`

function has been removed. Use the vectorized function`Measurements.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 complex`Measurement`

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 from`QuadGK.jl`

package is extended to support`Measurement`

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 to`Measurement{Float64}`

. This is the same as calling`measurement`

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 https://measurementsjl.readthedocs.io/en/stable/performance.html.

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): https://github.com/JuliaAstro/Cosmology.jl/issues/7. 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 https://measurementsjl.readthedocs.io/en/stable/examples.html#interplay-with-third-party-packages. The great Julia type system is instrumental in making all this work so easily!