<commit_before>Subtract
===
[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coverage Status][coveralls-image]][coveralls-url] [![Dependencies][dependencies-image]][dependencies-url]

> Computes an element-wise subtraction.


## Installation

``` bash
$ npm install compute-subtract
```

For use in the browser, use [browserify](https://github.com/substack/node-browserify).


## Usage

``` javascript
var subtract = require( 'compute-subtract' );
```

#### subtract( arr, x[, opts] )

Computes an element-wise subtraction. `x` may be either an `array` of equal length or a `numeric` value.

``` javascript
var arr = [ 2, 1, 4, 2 ],
	out;

out = subtract( arr, 1 );
// returns [ 1, 0, 3, 1 ]

out = subtract( arr, [ 1, 2, 3, 3 ] );
// returns [ 1, -1, 1, -1 ]
```

The function accepts the following `options`:

*  __copy__: `boolean` indicating whether to return a new `array`. Default: `true`.
*  __accessor__: accessor `function` for accessing values in object `arrays`.

To mutate the input `array` (e.g., when input values can be discarded or when optimizing memory usage), set the `copy` option to `false`.

``` javascript
var arr = [ 5, 3, 8, 3, 2 ];

var out = subtract( arr, 4, {
	'copy': false
});
// returns [ 1, -1, 4, -1, -2 ]

console.log( arr === out );
// returns true
```

__Note__: mutation is the `array` equivalent of a __minus-equal__ (`-=`).

For object `arrays`, provide an accessor `function` for accessing `array` values.

``` javascript
var data = [
	['beep', 5],
	['boop', 3],
	['bip', 8],
	['bap', 3],
	['baz', 2]
];

function getValue( d, i ) {
	return d[ 1 ];
}

var out = subtract( data, 4, {
	'accessor': getValue
});
// returns [ 1, -1, 4, -1, -2 ]
```

When subtracting values between two object `arrays`, provide an accessor `function` which accepts `3` arguments.

``` javascript
var data = [
	['beep', 5],
	['boop', 3],
	['bip', 8],
	['bap', 3],
	['baz', 2]
];

var arr = [
	{'x': 4},
	{'x': 5},
	{'x': 6},
	{'x': 5},
	{'x': 3}
];

function getValue( d, i, j ) {
	if ( j === 0 ) {
		return d[ 1 ];
	}
	return d.x;
}

var out = add( data, arr, {
	'accessor': getValue
});
// returns [ 1, -2, 2, -2, -1 ]
```

__Note__: `j` corresponds to the input `array` index, where `j=0` is the index for the first input `array` and `j=1` is the index for the second input `array`.




## Examples

``` javascript
var subtract = require( 'compute-subtract' );

var data = new Array( 100 );
for ( var i = 0; i < data.length; i++ ) {
	data[ i ] = Math.round( Math.random()*100 );
}
<commit_msg>[UPDATE] README.<commit_after>Subtract
===
[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coverage Status][coveralls-image]][coveralls-url] [![Dependencies][dependencies-image]][dependencies-url]

> Computes an element-wise subtraction.


## Installation

``` bash
$ npm install compute-subtract
```

For use in the browser, use [browserify](https://github.com/substack/node-browserify).


## Usage

``` javascript
var subtract = require( 'compute-subtract' );
```

#### subtract( arr, x[, opts] )

Computes an element-wise subtraction. `x` may be either an `array` of equal length or a `numeric` value.

``` javascript
var arr = [ 2, 1, 4, 2 ],
	out;

out = subtract( arr, 1 );
// returns [ 1, 0, 3, 1 ]

out = subtract( arr, [ 1, 2, 3, 3 ] );
// returns [ 1, -1, 1, -1 ]
```

The function accepts the following `options`:

*  __copy__: `boolean` indicating whether to return a new `array`. Default: `true`.
*  __accessor__: accessor `function` for accessing values in object `arrays`.

To mutate the input `array` (e.g., when input values can be discarded or when optimizing memory usage), set the `copy` option to `false`.

``` javascript
var arr = [ 5, 3, 8, 3, 2 ];

var out = subtract( arr, 4, {
	'copy': false
});
// returns [ 1, -1, 4, -1, -2 ]

console.log( arr === out );
// returns true
```

__Note__: mutation is the `array` equivalent of a __minus-equal__ (`-=`).

For object `arrays`, provide an accessor `function` for accessing `array` values.

``` javascript
var data = [
	['beep', 5],
	['boop', 3],
	['bip', 8],
	['bap', 3],
	['baz', 2]
];

function getValue( d, i ) {
	return d[ 1 ];
}

var out = subtract( data, 4, {
	'accessor': getValue
});
// returns [ 1, -1, 4, -1, -2 ]
```

When subtracting values between two object `arrays`, provide an accessor `function` which accepts `3` arguments.

``` javascript
var data = [
	['beep', 5],
	['boop', 3],
	['bip', 8],
	['bap', 3],
	['baz', 2]
];

var arr = [
	{'x': 4},
	{'x': 5},
	{'x': 6},
	{'x': 5},
	{'x': 3}
];

function getValue( d, i, j ) {
	if ( j === 0 ) {
		return d[ 1 ];
	}
	return d.x;
}

var out = subtract( data, arr, {
	'accessor': getValue
});
// returns [ 1, -2, 2, -2, -1 ]
```

__Note__: `j` corresponds to the input `array` index, where `j=0` is the index for the first input `array` and `j=1` is the index for the second input `array`.




## Examples

``` javascript
var subtract = require( 'compute-subtract' );

var data = new Array( 100 );
for ( var i = 0; i < data.length; i++ ) {
	data[ i ] = Math.round( Math.random()*100 );
}

{'fraction_non_alphanumeric': 0.1951840250587314, 'fraction_numerical': 0.026233359436178542, 'mean_word_length': 3.623529411764706, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1235106', 'n_tokens_mistral': 2072, 'n_tokens_neox': 1833, 'n_words': 649}