All Projects → herbie-fp → herbie

herbie-fp / herbie

Licence: other
Optimize floating-point expressions for accuracy

Programming Languages

HTML
75241 projects
racket
414 projects
scheme
763 projects
javascript
184084 projects - #8 most used programming language
rust
11053 projects
CSS
56736 projects

Projects that are alternatives of or similar to herbie

Herbie
Optimize floating-point expressions for accuracy
Stars: ✭ 459 (-25.24%)
Mutual labels:  synthesis, numerical-methods
fphdl
VHDL-2008 Support Library
Stars: ✭ 36 (-94.14%)
Mutual labels:  synthesis, floating-point
Unimidi
Realtime MIDI IO for Ruby
Stars: ✭ 229 (-62.7%)
Mutual labels:  synthesis
DecFP.jl
Julia IEEE decimal floating-point via the Intel decimal-float library
Stars: ✭ 49 (-92.02%)
Mutual labels:  floating-point
verrou
floating-point errors checker
Stars: ✭ 39 (-93.65%)
Mutual labels:  floating-point
I dropped my phone the screen cracked
web audio, cracked.
Stars: ✭ 245 (-60.1%)
Mutual labels:  synthesis
PyCannyEdge
Educational Python implementation of the Canny Edge Detector
Stars: ✭ 31 (-94.95%)
Mutual labels:  numerical-methods
Esp8266sam
Speech synthesis for ESP8266 using S.A.M. port
Stars: ✭ 199 (-67.59%)
Mutual labels:  synthesis
FpDebug
Dynamic Program Analysis based on Valgrind to find Floating-Point Accuracy Problems
Stars: ✭ 19 (-96.91%)
Mutual labels:  floating-point
pyFEM
A modular Finite Element Method solver implemented in Python
Stars: ✭ 16 (-97.39%)
Mutual labels:  numerical-methods
FScape-next
Audio rendering software, based on UGen graphs. Issue tracker: https://codeberg.org/sciss/FScape-next/issues
Stars: ✭ 13 (-97.88%)
Mutual labels:  synthesis
reef
Automatically labeling training data
Stars: ✭ 102 (-83.39%)
Mutual labels:  synthesis
neuralRDEs
Code for: "Neural Rough Differential Equations for Long Time Series", (ICML 2021)
Stars: ✭ 102 (-83.39%)
Mutual labels:  numerical-methods
QuantPDE
A high-performance, open-source, header-only C++(>=11) library for pricing derivatives.
Stars: ✭ 42 (-93.16%)
Mutual labels:  numerical-methods
Gwion
🎵 strongly-timed musical programming language
Stars: ✭ 235 (-61.73%)
Mutual labels:  synthesis
NAGPythonExamples
Examples and demos showing how to call functions from the NAG Library for Python
Stars: ✭ 46 (-92.51%)
Mutual labels:  numerical-methods
Tts Cube
End-2-end speech synthesis with recurrent neural networks
Stars: ✭ 213 (-65.31%)
Mutual labels:  synthesis
numerics
library of numerical methods using Armadillo
Stars: ✭ 17 (-97.23%)
Mutual labels:  numerical-methods
NumQM Basic
A mini-course offered to Undergrad physics students
Stars: ✭ 35 (-94.3%)
Mutual labels:  numerical-methods
FinEtools.jl
Finite Element tools in Julia
Stars: ✭ 126 (-79.48%)
Mutual labels:  numerical-methods

Herbie

Herbie automatically improves the error of floating point expressions. Visit our website for tutorials, documentation, and an online demo. Herbie has semi-regular releases once a year, maintains backwards compatibility, and uses standardized formats.

Installing

For full details on installing Herbie, please see the documentation.

Installing from Source

Installing from source requires Racket 8.0 or later, Rust 1.60.0 or later, and supports Windows, macOS, and Linux for various architectures.

Install Racket from here. Install Rust from here. In this directory, build Herbie with:

make install

This will install a herbie binary somewhere under ~/.racket (Linux) although this path is dependent on OS and Racket version (check installation messages for a possible location). You can also run src/herbie.rkt directly.

Installing from the Racket package index

Use this method for installing Herbie if Rust is not on your system. Installing via the Racket package index requires Racket 8.0 or later and supports Windows, macOS, and Linux on x86-64 architectures.

Install Racket from here. Install Herbie with:

raco pkg install --auto herbie

This will install a herbie binary somewhere under ~/.racket (Linux) although this path is dependent on OS and Racket version (check installation messages for a possible location). You can also run src/herbie.rkt directly.

Please note that this method of installation will fail for Apple M1 systems and other ARM architectures. We hope to support this in the near future.

Running Herbie

For full details on running Herbie, please see the tutorial.

Herbie's input format is the Scheme-like FPCore; for example (1 + x) - x is written

(FPCore (x) (- (+ 1 x) x))

You can see more examples in bench/. To use Herbie, run herbie shell and enter an FPCore expression:

$ herbie shell
Herbie 1.3 with seed 1866513483
Find help on https://herbie.uwplse.org/, exit with Ctrl-D
herbie> (FPCore (x) (- (+ 1 x) x))
(FPCore (x) ... 1)

In this case Herbie's improved, more-accurate expression is the constant 1.

Besides shell, Herbie also has a web interface, and can be run in batch mode on files with the improve and report commands. Consult the documentation. for more.

Helping Out

Herbie development is organized on our mailing list, where we discuss work in progress and announce major improvements. Email us to get involved!

We use Github and Trello to organize development goals.

Running Tests

Herbie has unit tests for basic functionality, though coverage is far from complete. You can run the test suite by downloading the source code, changing to the source code directory, and running:

make install
raco test src/

Herbie also contains a large benchmark suite drawn from open source projects, examples from users, and numerical analysis textbooks. This suite is found in bench/. The full test can be run with

herbie report bench/ report/

You may see warnings; these are expected. The output is HTML files in report/. This full test can take a few hours to run. We often test Herbie on basic but representative examples with:

herbie report bench/hamming/ graphs/

This takes approximately 10 minutes.

Historic and nightly test results are collected on uwplse.org.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].