roundme
is a human-assisted rounding analyzer. It helps its operator determine whether an arithmetic operation should round up or down.
- Recommends whether an arithmetic operation needs to round up or down
- Generates LaTeX-based reports in PDF
rounding()
is the expected rounding direction for the result (up or down)
A + B => rounding(A), rounding(B)
(addition does not change the rounding direction)A - B => rounding(A), ! rounding(B)
(the rounding direction of the substracted element is inverse of the expected rounding)A * B => rounding(A), rounding(B), rounding(*)
(multiplication does not change the rounding direction)A / B => rounding(A), ! rounding(B), rounding(/)
(the rounding direction of the denominator is the inverse of the expected rounding)A ** B
If A>=1 => rounding(A), rounding(B)
If A<1 => rounding(A), ! rounding(B)
(if A is below 1, the rounding direction of the exponent is the inverse of the expected rounding)
- Run
roundme init-sample
to generate a default configuration file. - Run
roundme init
to generate user configuration file. - Run
roundme analyze
to analyze the configuration file - Run
roundme analyze --output-format pdf
to generate a PDF (require latexmk)
Running roundme analyze --output-format pdf
on the default configuration will generate the following:
roundme
relies on a configuration file:
formula: a * b / c
round_up: true
less_than_one: ["a * b"] # optional
greater_than_one: ["c"] # optional
formula
contains the formula to be analyzeround_up
determines if the result of the formula should round up or downless_than_one
is used for the**
rules (raw string comparison and sensible to space)greater_than_one
is used for the**
rules (raw string comparison and sensible to space)
See the balancer V2 example.
Install with
cargo install roundme
To install the latest GitHub version
git clone [email protected]:crytic/roundme.git
cd roundme
cargo install --path .