Exponential Function

Exponential function.

The exponential function is defined as

where b is the base and x is the exponent.

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 the base 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 );
    }
}
Did you find this page helpful?