Skip to content

stakaz/BracedErrors.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BracedErrors.jl

This package helps to automate the printing of values with errors in brackets.

Build Status

Getting Started

This is a very simple but yet useful package which helps to generate strings with values and their corresponding error followed in brackets, e. g., 23.56(12)(30) stands for 23.56 ± 0.12 ± 0.30.

This is common notation in science and this package provides a function to generate these strings. The reading is the following: the error denoted with $N$ digits describes the error in the last $N$ shown digits of the value. E. g., 0.345(56) = 0.345 ± 0.56 or 1234567890(123) = 1234567890 ± 123.

Rounding

The errors are always rounded with ceil while the value is rounded with round. This rule is a usual conservative case for rounding errors.

By default the errors will have 2 digits in the brackets. See next section for more explanations.

Accepted values

This function is mainly written for float-like types as Float64.

Usage

There is only one function exported: bracederror. The usage is explained in its docstring.

Basic Usage

julia> bracederror(123.456, 0.123)
"123.46(13)"

julia> bracederror(123.456, 0.00123)
"123.4560(13)"

julia> bracederror(123.456, 123456)
"123(130000)"

Two errors

You can provide two or more errors.

julia> bracederror(123.456, 123456, 0.0034)
"123.4560(1300000000)(34)"

julia> bracederror(123.456, 0.123456, 0.0034)
"123.4560(1300)(34)"

julia> bracederror(1.23456, 0.1, 0.23, 0.45, 0.56)
"1.23(10)(23)(45)(57)"

Customize Output

With some keywords you can customize the output.

  • dec::Int = 2: number of decimals to round the errors to
  • suff::NTuple{String} = ("", ...): optional suffix after the brackets (Tuple can be omitted when using with only one error)
  • bracket::NTuple{Symbol} = (:r, ...): type of the brackets (Tuple can be omitted when using with only one error)

bracket can take the values: [:a, :l, :s, :r, :c, :_, :^] (angular, line, square, round, curly, subscript, superscript) which correspond to ["<>", "||", "[]", "()", "{}", "_{}", "^{}"]. The last two are useful for LaTeX output. However, note that this is not a common way of printing the errors. In such cases one usually prints the real error like in this example: $$0.1234 \pm 0.056 \pm 0.12 = 1.234(56)(12) = 1.234_{\pm 0.056}^{\pm 0.012}$$ and not $1.234_{56}^{12}$. But feel free to use it and annotate how to read it (it is the shortest one ;)). It is also possible that you use it for lower and upper error bound, where it makes much more sense and is common notation.

$$ 0.1234 +0.056 -0.012 = 0.1234_{56}^{12}$$

julia> bracederror(123.456, 0.123456, 0.0034; bracket=:s)
"123.4560[1300](34)"

julia> bracederror(123.456, 0.123456, 0.0034; suff2="_\\inf")
"123.4560(1300)(34)_\\inf"

julia> bracederror(123.456, 0.123456, 0.0034; dec=1)"123.456(200)(4)"

Unexported $±$ Infix Operator

Due to the fact that $\pm$ is often used as an operator BracedErrors by default does not export it. It is however defined and can be used by importing it like this:

julia> import BracedErrors: ±
julia>0.234 ± 0.00056
	"0.23400(56)"
julia>0.234 ± (0.00056, 0.45)
	"0.23400(56)(45000)"
julia>±(0.234, 0.00056, 0.45; bracket =(:r,:s))
	"0.23400(56)[45000]"

By using this infix operator you gain even more convenience in error printing in strings like "$(val ± err)" and so on.

Remarks

I have written this package during the hackathon at juliacon 2018 and this is the first official package. I have tried to test it on different cases but it is still very early stage. Please use it with care and any help is welcome.

About

This package helps to automate the printing of values with errors in brackets.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages