Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mikolalysenko/two-product
Multiplies two floating point numbers together, giving an increasing nonoverlapping sequence
https://github.com/mikolalysenko/two-product
Last synced: about 2 months ago
JSON representation
Multiplies two floating point numbers together, giving an increasing nonoverlapping sequence
- Host: GitHub
- URL: https://github.com/mikolalysenko/two-product
- Owner: mikolalysenko
- License: mit
- Created: 2013-09-18T18:00:06.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2014-05-28T17:25:13.000Z (over 10 years ago)
- Last Synced: 2024-10-20T14:27:13.598Z (2 months ago)
- Language: JavaScript
- Size: 199 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
two-product
===========
Computes the product of two floating point numbers as a 2-term nonoverlapping increasing sequence.[![testling badge](https://ci.testling.com/mikolalysenko/two-product.png)](https://ci.testling.com/mikolalysenko/two-product)
[![build status](https://secure.travis-ci.org/mikolalysenko/two-product.png)](http://travis-ci.org/mikolalysenko/two-product)
## Install
```
npm install two-product
```
## Example```javascript
var twoProduct = require("two-product")console.log(twoProduct(1 + Math.pow(2, -52), Math.pow(2, 52) + 1))
```Output:
```javascript
[ 2.220446049250313e-16, 4503599627370498 ]
```## API
### `require("two-product")(a, b[, result])`
Multiplies `a` and `b` and returns the product as a non-overlapping sequence. `result` is an optional length 2 array that stores the result.* `a` is a number
* `b` is a number
* `result` is an optional length 2 array that gets the result of multiplying `a` and `b`**Returns** A length 2 array representing the product of `a` and `b` as an expansion. The first entry is the lower order bits, and the second entry is the upper order bits.
**Note** This algorithm does not work correctly with denormalized numbers.
## Credits
JavaScript implementation (c) 2013-2014 Mikola Lysenko. Based on ideas from Jonathan Shewchuk's [robust adaptive geometric predicates](http://www.cs.cmu.edu/~quake/robust.html).