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è

Reply via email to