Coder Social home page Coder Social logo

roundme's Introduction

roundme

roundme is a human-assisted rounding analyzer. It helps its operator determine whether an arithmetic operation should round up or down.

Features

  • Recommends whether an arithmetic operation needs to round up or down
  • Generates LaTeX-based reports in PDF

Rules

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)

How to use

  • Run roundme init to generate a default configuration file.
  • Run roundme config to generate user configuration file.
  • Run roundme analyze to analyze the configuration file
  • Run roundme pdf to generate a PDF (require latexmk)

Running roundme pdf on the default configuration will generate the following: Example

Configuration

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 analyze
  • round_up determines if the result of the formula should round up or down
  • less_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

Install with

cargo install roundme

To install the latest GitHub version

git clone [email protected]:crytic/roundme.git
cd roundme
cargo install --path .

roundme's People

Contributors

dguido avatar montyly avatar smoelius avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.