evalpoly
Compile a C function for evaluating a polynomial.
Usage
var compile = require( '@stdlib/math/base/tools/evalpoly-compile-c' );
compile( c[, options] )
Compiles a C function for evaluating a polynomial having coefficients c
.
var str = compile( [ 3.0, 2.0, 1.0 ] );
// returns <string>
The function supports the following options
:
- dtype: input argument floating-point data type (e.g.,
double
orfloat
). Default:'double'
. - name: function name. Default:
'evalpoly'
.
In the example above, the output string would correspond to the following function:
/**
* Evaluates a polynomial.
*
* ## Notes
*
* - The implementation uses [Horner's rule][horners-method] for efficient computation.
*
* [horners-method]: https://en.wikipedia.org/wiki/Horner%27s_method
*
* @param x value at which to evaluate the polynomial
* @return evaluated polynomial
*/
static double evalpoly( const double x ) {
return 3.0 + (x * (2.0 + (x * 1.0)));
}
To generate a function having a custom name and supporting single-precision floating-point numbers, provide the corresponding options.
var opts = {
'dtype': 'float',
'name': 'polyval123'
};
var str = compile( [ 3.0, 2.0, 1.0 ], opts );
// returns <string>
For the previous example, the output string would correspond to the following function:
/**
* Evaluates a polynomial.
*
* ## Notes
*
* - The implementation uses [Horner's rule][horners-method] for efficient computation.
*
* [horners-method]: https://en.wikipedia.org/wiki/Horner%27s_method
*
* @param x value at which to evaluate the polynomial
* @return evaluated polynomial
*/
static float polyval123( const float x ) {
return 3.0f + (x * (2.0f + (x * 1.0f)));
}
Notes
- The coefficients should be ordered in ascending degree, thus matching summation notation.
- The function is intended for non-browser environments for the purpose of generating functions for inclusion in source files.
Examples
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var compile = require( '@stdlib/math/base/tools/evalpoly-compile-c' );
// Create an array of random coefficients:
var coef = discreteUniform( 10, -100, 100 );
// Compile a function for evaluating a polynomial:
var str = compile( coef );
console.log( str );