@stdlib/math-base-special-fast-pow-int
v0.3.0
Published
Exponential function.
Downloads
55
Readme
Exponential Function
The exponential function is defined as
where b
is the base and x
is the exponent.
Installation
npm install @stdlib/math-base-special-fast-pow-int
Usage
var pow = require( '@stdlib/math-base-special-fast-pow-int' );
pow( base, exponent )
Evaluates the exponential function given a signed 32-bit integer exponent
.
var v = pow( 2.0, 3 );
// returns 8.0
v = pow( 100.0, 0 );
// returns 1.0
v = pow( 3.14, 1 );
// returns 3.14
v = pow( -3.14, 1 );
// returns -3.14
v = pow( 2.0, -2 );
// returns 0.25
v = pow( NaN, 3 );
// returns NaN
Notes
This implementation is not recommended for high-precision applications due to error accumulation. As a trivial example, consider
var v = pow( 10.0, 308 ); // returns 1.0000000000000006e+308
where the expected result is
1.0e+308
.If provided a negative
exponent
, the implementation first computes the reciprocal of thebase
and then evaluates the exponential function. This can introduce significant error. For example,var v = pow( -459, -98 ); // returns 1.3878956588399783e-261
where the expected result is
1.3878956588399598e-261
. From the bit sequences,0000100111000101110110100000000111001011001011010001000101010110 0000100111000101110110100000000111001011001011010001000100000100
one observes that the returned value differs in the last
7
bits of the significand.
Examples
var pow = require( '@stdlib/math-base-special-fast-pow-int' );
var x;
var y;
var v;
x = 10.0;
for ( y = 0; y < 309; y++ ) {
v = pow( x, y );
console.log( '%d^%d = %d', x, y, v );
}
C APIs
Usage
#include "stdlib/math/base/special/fast/pow.h"
stdlib_base_fast_pow( x, y )
Evaluates the exponential function given a signed 32-bit integer exponent
.
double out = stdlib_base_fast_pow( 2.0, 3 );
// returns 8.0
out = stdlib_base_fast_pow( 3.14, 0 );
// returns 1.0
The function accepts the following arguments:
- x:
[in] double
base. - y:
[in] double
exponent.
double stdlib_base_fast_pow( const double x, const int32_t y );
Examples
#include "stdlib/math/base/special/fast/pow.h"
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
int main( void ) {
const double x[] = { 3.14, 2.0, 2.0, 0.0 };
const int32_t y[] = { 0, 3, -2, 0 };
double z;
int i;
for ( i = 0; i < 4; i++ ) {
z = stdlib_base_fast_pow( x[ i ], y[ i ] );
printf( "pow( %lf, %d ) = %lf\n", x[ i ], y[ i ], z );
}
}
See Also
@stdlib/math-base/special/pow
: exponential function.
Notice
This package is part of stdlib, a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
For more information on the project, filing bug reports and feature requests, and guidance on how to develop stdlib, see the main project repository.
Community
License
See LICENSE.
Copyright
Copyright © 2016-2024. The Stdlib Authors.