frac/README.md

66 lines
1.9 KiB
Markdown
Raw Normal View History

2013-12-14 07:11:37 +00:00
# frac
Rational approximation to a floating point number with bounded denominator.
Uses the Mediant Method <https://en.wikipedia.org/wiki/Mediant_(mathematics)>
This module also provides an implementation of the continued fraction method as
2014-05-01 03:21:53 +00:00
described by Aberth in "A method for exact computation with rational numbers",
which appears to be used by spreadsheet programs for displaying fractions
2014-05-01 03:21:53 +00:00
## Setup
2013-12-14 07:11:37 +00:00
In node:
$ npm install frac
In the browser:
<script src="frac.js"></script>
2014-05-01 03:21:53 +00:00
The script will manipulate `module.exports` if available (e.g. in a CommonJS
`require` context). This is not always desirable. To prevent the behavior,
define `DO_NOT_EXPORT_FRAC`
## Usage
2013-12-14 07:11:37 +00:00
The exported `frac` function takes three arguments:
- `x` the number we wish to approximate
- `D` the maximum denominator
- `mixed` if true, return a mixed fraction (default); if false, improper
The return value is an array of the form `[quot, num, den]` where `quot==0`
for improper fractions.
For example:
```
> // var frac = require('frac'); // uncomment this line if in node
> frac(Math.PI,100) // [ 0, 22, 7 ]
> frac(Math.PI,100,true) // [ 3, 1, 7 ]
```
`frac.cont` implements the Aberth algorithm (input and output specifications
match the original `frac` function)
2014-05-01 03:21:53 +00:00
## License
Apache 2.0
## Tests
Tests generated from Excel have 4 columns. To produce a similar test:
- Column A contains the raw values
- Column B format "Up to one digit (1/4)"
- Column C format "Up to two digits (21/25)"
- Column D format "Up to three digits (312/943)"
2014-05-01 02:32:25 +00:00
[![Build Status](https://travis-ci.org/SheetJS/frac.svg?branch=master)](https://travis-ci.org/SheetJS/frac)
2014-05-01 03:21:53 +00:00
[![Coverage Status](https://coveralls.io/repos/SheetJS/frac/badge.png?branch=master)](https://coveralls.io/r/SheetJS/frac?branch=master)
2014-05-01 02:32:25 +00:00
[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/731e31b3a26382ccd5d213b9e74ea552 "githalytics.com")](http://githalytics.com/SheetJS/frac)