# linear-arbitrary-precision

> Linear arbitrary precision

Latest version **4.1.0** (published 2016-05-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install linear-arbitrary-precision
pnpm add linear-arbitrary-precision
yarn add linear-arbitrary-precision
bun add linear-arbitrary-precision
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.1.0 |
| Published | 2016-05-11 |
| First published | 2015-07-04 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 10 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Javier Cejudo |
| Maintainers | javiercejudo |
| Keywords | feature scaling, normalisation, normalization, scale, rescale |

## Links

- npm: https://www.npmjs.com/package/linear-arbitrary-precision
- Repository: https://github.com/javiercejudo/linear-arbitrary-precision
- Homepage: https://github.com/javiercejudo/linear-arbitrary-precision#readme
- Issues: https://github.com/javiercejudo/linear-arbitrary-precision/issues
- npm.io page: https://npm.io/package/linear-arbitrary-precision

## Dependencies (10)

- [lodash.flow](https://npm.io/package/lodash.flow.md) ^3.2.1
- [abs-arbitrary-precision](https://npm.io/package/abs-arbitrary-precision.md) ^1.0.1
- [div-arbitrary-precision](https://npm.io/package/div-arbitrary-precision.md) ^1.0.0
- [mod-arbitrary-precision](https://npm.io/package/mod-arbitrary-precision.md) ^1.0.0
- [core-arbitrary-precision](https://npm.io/package/core-arbitrary-precision.md) ^3.1.0
- [plus-arbitrary-precision](https://npm.io/package/plus-arbitrary-precision.md) ^1.0.0
- [minus-arbitrary-precision](https://npm.io/package/minus-arbitrary-precision.md) ^1.0.0
- [times-arbitrary-precision](https://npm.io/package/times-arbitrary-precision.md) ^1.0.0
- [equals-arbitrary-precision](https://npm.io/package/equals-arbitrary-precision.md) ^1.0.1
- [inequality-arbitrary-precision](https://npm.io/package/inequality-arbitrary-precision.md) ^1.0.1

## Recent versions

- 4.1.0 (latest) — 2016-05-11
- 4.0.2 — 2016-05-07
- 4.0.1 — 2016-05-07
- 4.0.0 — 2016-05-07
- 3.4.0 — 2015-11-11
- 3.3.0 — 2015-11-10
- 3.2.4 — 2015-11-08
- 3.2.3 — 2015-11-08
- 3.2.2 — 2015-11-08
- 3.2.1 — 2015-11-08
- 3.2.0 — 2015-11-04
- 3.1.2 — 2015-10-26
- 3.1.1 — 2015-10-26
- 3.1.0 — 2015-07-18
- 3.0.4 — 2015-07-18
- … 6 more at https://npm.io/package/linear-arbitrary-precision/versions

## README

# linear-arbitrary-precision

[![Build Status](https://travis-ci.org/javiercejudo/linear-arbitrary-precision.svg)](https://travis-ci.org/javiercejudo/linear-arbitrary-precision)
[![Coverage Status](https://coveralls.io/repos/javiercejudo/linear-arbitrary-precision/badge.svg?branch=master)](https://coveralls.io/r/javiercejudo/linear-arbitrary-precision?branch=master)
[![Code Climate](https://codeclimate.com/github/javiercejudo/linear-arbitrary-precision/badges/gpa.svg)](https://codeclimate.com/github/javiercejudo/linear-arbitrary-precision)

Abstraction for linear functionality in
[big.js](https://github.com/MikeMcl/big.js),
[bignumber.js](https://github.com/MikeMcl/bignumber.js),
[decimal.js](https://github.com/MikeMcl/decimal.js)
and others via adapters.

## Install

    npm i linear-arbitrary-precision

## Usage

See [CodePen example](http://codepen.io/javiercejudo/pen/oXqGgZ?editors=101)

### Adapters

- [[adapter]](https://github.com/javiercejudo/linear-bigjs-adapter) [[lib]](https://github.com/javiercejudo/linear-big.js) linear-big.js
- [[adapter]](https://github.com/javiercejudo/bigjs-adapter) [[lib]](https://github.com/MikeMcl/big.js) big.js
- [[adapter]](https://github.com/javiercejudo/bignumberjs-adapter) [[lib]](https://github.com/MikeMcl/bignumber.js) bignumber.js
- [[adapter]](https://github.com/javiercejudo/decimaljs-adapter) [[lib]](https://github.com/MikeMcl/decimal.js) decimal.js
- [[adapter]](https://github.com/javiercejudo/bigdecimal-adapter) [[lib]](https://github.com/iriscouch/bigdecimal.js) bigdecimal.js
- [[adapter]](https://github.com/javiercejudo/floating-adapter) [[lib]](https://github.com/javiercejudo/floating) floating
- [[adapter]](https://github.com/javiercejudo/linear-converter-adapter) [[lib]](https://github.com/javiercejudo/linear-converter) linear-converter
- [[adapter]](https://github.com/javiercejudo/very-simple-statistics-adapter) [[lib]](https://github.com/sumanla13a/statistics-module) statistics-module

See [up to date list](https://www.npmjs.com/browse/keyword/linear-arbitrary-precision-adapter).

### Factory and configuration

```js
var decimalFactory = require('linear-arbitrary-precision');
var adapter = require('bigjs-adapter'); // See adapters section for full list

var Decimal = decimalFactory(adapter);

Decimal.getPrecision(); // => 20

new Decimal('1').div(new Decimal('3')).valueOf(); // => '0.33333333333333333333'

Decimal.setPrecision(5);

new Decimal('1').div(new Decimal('3')).valueOf(); // => '0.33333'
```

### Operations

```js
new Decimal('0.1').plus(new Decimal('0.2')).valueOf(); // => '0.3'
new Decimal('0.3').minus(new Decimal('0.1')).valueOf(); // => '0.2'
new Decimal('0.6').times(new Decimal('3')).valueOf(); // => '1.8'
new Decimal('0.3').div(new Decimal('0.2')).valueOf(); // => '1.5'

new Decimal('1').equals(new Decimal('1')); // => true
new Decimal('1').equals(new Decimal('2')); // => false
```

### toString, valueOf and toJSON

```js
var decimalThird = new Decimal('1').div(new Decimal('3'));

// with bigjs-adapter (other adapters might have differing implementations)
decimalThird.toString() === decimalThird.valueOf() === decimalThird.toJSON(); // => true

Number(decimalThird); // => 1/3
```

### JSON.stringify and JSON.parse with reviver

```js
var Decimal40 = decimalFactory(adapter);

Decimal40.setPrecision(40);

var decimalThird = new Decimal40('1').div(new Decimal('3'));

var stringified = JSON.stringify(decimalThird);
// => '"0.3333333333333333333333333333333333333333"'

JSON.parse(stringified, Decimal40.reviver);
// => new Decimal40('0.3333333333333333333333333333333333333333')
```

See [spec](test/spec.js).

## Related projects

- [linear-converter](https://github.com/javiercejudo/linear-converter): flexible linear converter with built in conversions for common units.
- [linear-conversion](https://github.com/javiercejudo/linear-conversion): Linear conversion class for *linear-converter*.
- [rescale](https://github.com/javiercejudo/rescale): rescales a point given two scales.
- [rescale-util](https://github.com/javiercejudo/rescale-util): Rescale utilities.
- [scale](https://github.com/javiercejudo/scale): scales normalised data.
- [normalise](https://github.com/javiercejudo/normalise): normalise data to [0, 1].

---
_Source: https://npm.io/package/linear-arbitrary-precision · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
