modf
Decompose a double-precision floating-point number into integral and fractional parts.
Usage
var modf = require( '@stdlib/math/base/special/modf' );
modf( x )
Decomposes a double-precision floating-point number into integral and fractional parts, each having the same type and sign as x
.
var parts = modf( 3.14 );
// returns [ 3.0, 0.14000000000000012 ]
parts = modf( +0.0 );
// returns [ +0.0, +0.0 ]
parts = modf( -0.0 );
// returns [ -0.0, -0.0 ]
parts = modf( Infinity );
// returns [ Infinity, +0.0 ]
parts = modf( -Infinity );
// returns [ -Infinity, -0.0 ]
parts = modf( NaN );
// returns [ NaN, NaN ]
modf.assign( x, out, stride, offset )
Decomposes a double-precision floating-point number into integral and fractional parts, each having the same type and sign as x
, and assigns results to a provided output array.
var Float64Array = require( '@stdlib/array/float64' );
var out = new Float64Array( 2 );
var parts = modf.assign( 3.14, out, 1, 0 );
// returns <Float64Array>[ 3.0, 0.14000000000000012 ]
var bool = ( parts === out );
// returns true
Examples
var randu = require( '@stdlib/random/base/randu' );
var modf = require( '@stdlib/math/base/special/modf' );
var parts;
var x;
var i;
for ( i = 0; i < 100; i++ ) {
x = (randu()*1000.0) - 500.0;
parts = modf( x );
console.log( 'modf(%d) => integral: %d. fraction: %d.', x, parts[ 0 ], parts[ 1 ] );
}
C APIs
Usage
#include "stdlib/math/base/special/modf.h"
stdlib_base_modf( x, integral, frac )
Decomposes a double-precision floating-point number into integral and fractional parts, each having the same type and sign as x
.
double integral;
double frac;
stdlib_base_modf( 4.0, &integral, &frac );
The function accepts the following arguments:
- x:
[in] double
input value. - frac:
[out] double*
destination for the integral part. - exp:
[out] double*
destination for the fractional part.
void stdlib_base_modf( const double x, double *integral, double *frac );
Examples
#include "stdlib/math/base/special/modf.h"
#include <stdio.h>
int main( void ) {
const double x[] = { 4.0, 0.0, -0.0, 1.0, -1.0, 3.14, -3.14, 1.0e308, -1.0e308, 1.0/0.0, -1.0/0.0, 0.0/0.0 };
double integral;
double frac;
int i;
for ( i = 0; i < 12; i++ ) {
stdlib_base_modf( x[ i ], &integral, &frac );
printf( "x: %lf => integral: %lf, frac: %lf\n", x[ i ], integral, frac );
}
}