Evaluates a polynomial.
$ npm install compute-polynomial
For use in the browser, use browserify.
var polyval = require( 'compute-polynomial' );
Evaluates a polynomial whose coefficients are defined by coef
. x
may be either a single numeric
value or an array
of values at which to evaluate to the polynomial.
The coefficients should be ordered in descending degree. For example, for a polynomial
a_nx^n + a_(n-1)x^(n-1) + ... + a_1x^1 + a_0x^0
the coefficients would be
[a_n, a_(n-1),..., a_1, a_0]
Consider the polynomial 4x^3 + 2x^2 + 6x - 17
. To evaluate the polynomial at a single value,
var val = polyval( [ 4, 2, 6, -17 ], 10 );
// returns 4243
To evaluate the polynomial at multiple values,
var vals = polyval( [ 4, 2, 6, -17 ], [ 10, -3 ] );
// returns [ 4243, -125 ]
When provided an input array
, the function accepts the following options
:
- copy:
boolean
indicating whether to return a newarray
. Default:true
. - accessor: accessor
function
for accessing numeric values in objectarrays
.
To mutate the input array
(e.g., when input values can be discarded or when optimizing memory usage), set the copy
option to false
.
var coefs = [ 4, 2, 6, -17 ],
x = [ 10, -3 ];
var vals = polyval( coefs, x, {
'copy': false
});
// returns [ 4243, -125 ]
console.log( x === vals );
// returns true
For object arrays
, provide an accessor function
for accessing array
values.
var coefs = [ 4, 2, 6, -17 ];
var data = [
['beep', 10],
['boop', -3]
];
function getValue( d, i ) {
return d[ 1 ];
}
var vals = polyval( coefs, data, {
'accessor': getValue
});
// returns [ 4243, -125 ]
var polyval = require( 'compute-polynomial' );
var coef = new Array( 25 ),
sign;
for ( var i = 0; i < coef.length; i++ ) {
sign = 1;
if ( Math.random()-0.5 < 0 ) {
sign = -1;
}
coef[ i ] = sign * Math.round( Math.random()*i );
}
// Evaluate the polynomial at a single value:
console.log( polyval( coef, 10 ) );
// Evaluate the polynomial at multiple values:
console.log( polyval( coef, [ 10, -10 ] ) );
To run the example code from the top-level application directory,
$ node ./examples/index.js
This method implements Horner's rule to achieve efficient computation.
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
Copyright © 2014-2015. Athan Reines.