Right from the first version,
siunitx has supported uncertainty values in
numbers. Uncertainties are a key piece of information about a lot of scientific
values, and so it’s important to have a convenient way to present them.
The most common uncertainty we see is one that is symmetrical, a value
plus-or-minus some number, for example 1.23 ± 0.04. This could be a standard
deviation from repeated measurement, or a tolerance, or derived some other way.
Luckily for me, the source of such a value doesn’t matter:
needs to be able to read the input, store it and print the output. For both
reading and printing,
siunitx has two ways of handling these symmetrical
- A ‘long’ form, in which the uncertainty is given as a complete number, for example 1.23 ± 0.04
- A ‘compact’ form, in which the uncertainly is shown relative to the digits in the main value, for example 1.23(4)
In version 3 of
siunitx, I took that existing support and added a
long-requested new feature: rounding to an uncertainty. That means that if you
have something like 1.2345 ± 0.0367 and ask to round to one place, the
uncertainty is first rounded (to 0.04), then the main value is rounded to the
same precision (to 1.23).
Building on that, v3.1 added the idea of multiple uncertainties. These come up
in some areas (astronomy is one, particle physics another) where there are clear
sources of distinct uncertainty elements. Supporting multiple uncertainties also
means supporting descriptions for them: if you are dividing up uncertainty,
you likely want to say why. So in v3.1, you can say
1.23 ± 0.04
± 0.05, and set up the descriptors, and have something like
1.23 ± 0.04 (sys)
± 0.05 (stat) get printed. I’ve not had any feedback yet on this new feature:
fingers-crossed that means it all works 100%!
Now, for v3.3, I’ve looked at another long-standing request: asymmetric
uncertainties. For this release, I’ve kept this area simple, as it’s one I know
less about. There’s just a ‘compact’ input form, and one (compact) output form.
So we can input
1.23(4:5) and get in TeX terms
typeset. Asymmetric and symmetric uncertainties can be intermixed, and you can
have multiple asymmetric ones. I’m hoping this feature gets picked up by users,
and that I get some idea of what to do next. I suspect there might be
alternative output formats requested, and I wonder whether a ‘long’ input form
1.23 + 0.04 - 0.05 will be asked for: I’ve not done that yet as it’s more
tricky if the user misses one part out!
Hopefully, with the introduction of asymmetric uncertainty support,
covers just about all types of uncertainty in scientific data: aiming to be a
comprehensive (SI) units package, after all!