Significant Figures (AKA SigFigs) are a mathematical means that ensures that derived values do not possess more information then they actually do. Think about it like this:

Say you want to know how large 1/3 of the diameter of a pizza is. You measure this pizza to be 45.72(+/-0.01) cm with a meter stick. So let's do the math

julia>45.73* (1/3)
15.243333333333332

No! Wrong. Nope! How could we possibly say anything about how many micrometers or nanometers the pizza is with our current measuring implement? We can't! SigFigs.jl what ever shall we do?

Bah bah buh bahhhh

using SigFigs
julia> SigFigs.significantfigures( SigFig(45.73, 4) * (1/3) )
15.24

Oh whew - all is well with the universe. Thanks SigFigs.jl!

Functionality

Basic operations with SigFigs instances (+,-,*,/,%, cos, sin, asin, exp, log, sqrt, etc) and some collections (transpose, matrix multiply, etc) are currently supported. You likely will find rough patches. Report any bugs, unexpected behaviours, etc.

Is this the right tool for you?

I facetiously posted an announcement of this package in Julia Slack. Let's be honest this is a pretty underwhelming contribution. Someone replied, something to the effect of "Doesn't Measurements.jl already do this?", and offered the following snipit:

using Measurements
julia> (45.73±0.01) * (1/3)
15.2433±0.0033

Note: Measurements.jl will display uncertainty to 2 decimal places.

So I must say, as I always do, I love Measurements.jl! And yes, it will give the proper significant figures for most linear operations of a Measurements instance if the uncertainties are known. But, there are MANY cases where an uncertainty is not known, or requires tremendous amount of work to even ballpark estimate. Similarly, there are many cases where running Measurements.jl has a significant over-head. In those cases it may be preferred to only bother with the significant figures of a calculation. So its a pragmatic way of handling certain calculations without going deep into the weeds. If the order of magnitude estimate is off from a desired application, was it really worth tabulating all of the uncertainties in a complicated process?

Julia Packages

This website serves as a package browsing tool for the Julia programming language. It works by aggregating various sources on Github to help you find your next package.