0.2.2 • Published 1 month ago

@stdlib/math-base-special-expm1rel v0.2.2

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
1 month ago

expm1rel

NPM version Build Status Coverage Status

Compute the relative error exponential.

The relative error exponential is defined as

Installation

npm install @stdlib/math-base-special-expm1rel

Usage

var expm1rel = require( '@stdlib/math-base-special-expm1rel' );

expm1rel( x )

Computes the relative error exponential.

var v = expm1rel( 0.0 );
// returns 1.0

v = expm1rel( 1.0 );
// returns ~1.718

v = expm1rel( -1.0 );
// returns ~0.632

v = expm1rel( NaN );
// returns NaN

Notes

  • When x is near zero, exp(x)-1 can suffer catastrophic cancellation (i.e., a significant loss in precision). expm1rel avoids such a loss in precision.

Examples

var randu = require( '@stdlib/random-base-randu' );
var expm1rel = require( '@stdlib/math-base-special-expm1rel' );

var x;
var y;
var a;
var i;

for ( i = 0; i < 100; i++ ) {
    x = (randu()*100.0) - 50.0;
    a = x.toFixed( 3 );
    y = expm1rel( x );
    console.log( '(e^%d - 1)/%d = %d', a, a, y );
}

C APIs

Usage

#include "stdlib/math/base/special/expm1rel.h"

stdlib_base_exmp1rel( x )

Computes the relative error exponential.

double out = stdlib_base_expm1rel( 0.0 );
// returns 1.0

out = stdlib_base_expm1rel( 1.0 );
// returns ~1.718

The function accepts the following arguments:

  • x: [in] double input value.
double stdlib_base_expm1rel( const double x );

Examples

#include "stdlib/math/base/special/expm1rel.h"
#include <stdlib.h>
#include <stdio.h>

int main( void ) {
    double x;
    double v;
    int i;
    
    for ( i = 0; i < 100; i++ ) {
        x = ( ( (double)rand() / (double)RAND_MAX ) * 100.0 ) - 50.0;
        v = stdlib_base_expm1rel( x );
        printf( "(e^%lf - 1)/%lf = %lf\n", x, x, v );
    }
}

See Also


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

Chat


License

See LICENSE.

Copyright

Copyright © 2016-2024. The Stdlib Authors.