Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring
NaNvalues and using a second-order iterative Kahan–Babuška algorithm.
var snansumkbn2 = require( '@stdlib/blas/ext/base/ndarray/snansumkbn2' );Computes the sum of a one-dimensional single-precision floating-point ndarray, ignoring NaN values and using a second-order iterative Kahan–Babuška algorithm.
var Float32Array = require( '@stdlib/array/float32' );
var ndarray = require( '@stdlib/ndarray/base/ctor' );
var xbuf = new Float32Array( [ 1.0, -2.0, NaN, 2.0 ] );
var x = new ndarray( 'float32', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );
var v = snansumkbn2( [ x ] );
// returns 1.0The function has the following parameters:
- arrays: array-like object containing a one-dimensional input ndarray.
- If provided an empty one-dimensional ndarray, the function returns
0.0.
var bernoulli = require( '@stdlib/random/base/bernoulli' );
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
var filledarrayBy = require( '@stdlib/array/filled-by' );
var ndarray = require( '@stdlib/ndarray/base/ctor' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var snansumkbn2 = require( '@stdlib/blas/ext/base/ndarray/snansumkbn2' );
function clbk() {
if ( bernoulli( 0.7 ) > 0 ) {
return discreteUniform( 0, 100 );
}
return NaN;
}
var xbuf = filledarrayBy( 10, 'float32', clbk );
var x = new ndarray( 'float32', xbuf, [ xbuf.length ], [ 1 ], 0, 'row-major' );
console.log( ndarray2array( x ) );
var v = snansumkbn2( [ x ] );
console.log( v );- Klein, Andreas. 2005. "A Generalized Kahan-Babuška-Summation-Algorithm." Computing 76 (3): 279–93. doi:10.1007/s00607-005-0139-x.