factorialln

Natural logarithm of the factorial function.

The natural logarithm of the factorial function may be expressed

The factorial function may be defined as the product

or according to the recurrence relation

Following the convention for an empty product, in all definitions,

The Gamma function extends the factorial function for non-integer values.

The factorial of a negative integer is not defined.

Evaluating the natural logarithm of factorial function is useful as the factorial function can overflow for large n. Thus, factorialln( n ) is generally preferred to ln( n! ).

Usage

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

factorialln( x )

Evaluates the natural logarithm of the factorial function. For input values other than negative integers, the function returns ln( x! ) = ln( Γ(x+1) ), where Γ is the Gamma function. For negative integers, the function returns NaN.

var v = factorialln( 3.0 );
// returns ~1.792

v = factorialln( 2.4 );
// returns ~1.092

v = factorialln( -1.0 );
// returns NaN

v = factorialln( -1.5 );
// returns ~1.266

If provided NaN, the function returns NaN.

var v = factorialln( NaN );
// returns NaN

Examples

var incrspace = require( '@stdlib/array/base/incrspace' );
var factorialln = require( '@stdlib/math/base/special/factorialln' );

var x = incrspace( -10.0, 50.0, 0.5 );

var i;
for ( i = 0; i < x.length; i++ ) {
    console.log( 'x: %d, f(x): %d', x[ i ], factorialln( x[ i ] ) );
}

C APIs

Usage

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

stdlib_base_factorialln( x )

Evaluates the natural logarithm of the factorial function. For input values other than negative integers, the function returns ln( x! ) = ln( Γ(x+1) ), where Γ is the Gamma function. For negative integers, the function returns NaN.

double out = stdlib_base_factorialln( 3.0 );
// returns ~1.792

out = stdlib_base_factorialln( -1.5 );
// returns ~1.266

The function accepts the following arguments:

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

Examples

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

int main( void ) {
    const double x[] = { 2.0, 3.0, 5.0, 8.0 };

    double y;
    int i;
    for ( i = 0; i < 4; i++ ) {
        y = stdlib_base_factorialln( x[ i ] );
        printf( "factorialln(%lf) = %lf\n", x[ i ], y );
    }
}
Did you find this page helpful?