Dear all, I'd like to share with you my new simple package Measurements.jl <https://github.com/giordano/Measurements.jl>, a library for propagation of uncertainty. The package provides a new type, Measurement, that is composed by the value and its associated error, assumed to be a standard deviation. Then, some basic mathematical operations are redefined to handle Measurement type and return a Measurement object with error computed according to rules of uncertainty propagation of standard deviations.
I started this new function because I didn't find anything like this in http://pkg.julialang.org/ Please tell me if I missed a registered package. Before further developing my package, I'd like to have some comments about it and how to improve its design. The fields of Measurement type are arbitrary in order to make the library compatible with as many library as possible (I was thinking about compatibility with SIUnits, for example), but operations like zero, hypot, and inv must make sense for the field types (SIUnits misses hypot), in addition to the other mathematical operations. The package, released under terms of MIT "Expat" License, isn't registered yet, but you can check it out with Pkg.clone("https://github.com/giordano/Measurements.jl") Here are some examples taken from the README: using Measurements a = Measurement(4.5, 0.1) # => 4.5 ± 0.1 b = Measurement(3.8, 0.4) # => 3.8 ± 0.4 2a + b # => 12.8 ± 0.4472135954999579 a - 1.2b # => -0.05999999999999961 ± 0.49030602688525043 l = Measurement(0.936, 1e-3); T = Measurement(1.942, 4e-3); P = 4pi^2*l/T^2 # => 9.797993213510699 ± 0.041697817535336676 c = Constant(4) # => 4 ± 0 a*c # => 18.0 ± 0.4 sind(Measurement(94, 1.2)) # => 0.9975640502598242 ± 0.0014609761696991563 Cheers, Mosè
