Giter Club home page Giter Club logo

cs6110-final-project's Introduction

Finding and Explaining Errors in Floating Point programs

Installing

This project 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. We recommend the official Racket installer over Snap. If your configuration depends on Racket being installed via Snap, you will need to ensure that Herbie and all packages are located in your home directory or another allow-listed directory. Install Rust from here. In this directory, build Herbie with:

make install

Running the project

To run this project you can run the command:

racket src/herbie.rkt web

This will open Herbie's web interface. Here you will be prompted to enter the floating point expression whose error's you want explained, along with ranges for each input variable.

Herbie's web interface

After Herbie is done improving the expression for accuracy, Herbie directs you to a report page showing optimized rewrites of the expression. To get explanations, you will have to click the "metrics" link at the top right corner of the report page.

Metric's link

This will take you the metrics page. Under the section "preprocess", you should find a dropdown called "Explanations". The explanations of the errors of the expression will be found here. Each explanation shows the erroneous operator, erroneous subexpression, the explanation and the frequency of the error. In sub-expressions where the cause of error is an over/underflow, possible sources of over/underflow are also listed.

Explanations Table

If you want to run explanations on one of Herbie's benchmark suites, you can run

racket src/herbie.rkt bench/hamming report/ 

Herbie will run for all the expressions in the benchmark and the collected report will be in the folder report.

Source Code

You will find the main explanations algorithm in the function predicted-errors starting at line 50 in the file src/error-table.rkt.

cs6110-final-project's People

Contributors

bhargavkulk avatar

Watchers

 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.