Compute the cumulative sum of a one-dimensional double-precision floating-point ndarray using an improved Kahan–Babuška algorithm.
var dcusumkbn = require( '@stdlib/blas/ext/base/ndarray/dcusumkbn' );Computes the cumulative sum of a one-dimensional double-precision floating-point ndarray using an improved Kahan–Babuška algorithm.
var Float64Array = require( '@stdlib/array/float64' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var scalar2ndarray = require( '@stdlib/ndarray/base/from-scalar' );
var ndarray = require( '@stdlib/ndarray/base/ctor' );
var xbuf = new Float64Array( [ 1.0, 3.0, 4.0, 2.0 ] );
var x = new ndarray( 'float64', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );
var ybuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] );
var y = new ndarray( 'float64', ybuf, [ 4 ], [ 1 ], 0, 'row-major' );
var initial = scalar2ndarray( 0.0, 'float64', 'row-major' );
var v = dcusumkbn( [ x, y, initial ] );
// returns <ndarray>
var bool = ( v === y );
// returns true
var arr = ndarray2array( v );
// returns [ 1.0, 4.0, 8.0, 10.0 ]The function has the following parameters:
- arrays: array-like object containing a one-dimensional input ndarray, a one-dimensional output ndarray, and a zero-dimensional ndarray containing the initial sum.
- If provided an empty one-dimensional input ndarray, the function returns the output ndarray unchanged.
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var ndarray = require( '@stdlib/ndarray/base/ctor' );
var zerosLike = require( '@stdlib/ndarray/zeros-like' );
var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var dcusumkbn = require( '@stdlib/blas/ext/base/ndarray/dcusumkbn' );
var xbuf = discreteUniform( 10, -50, 50, {
'dtype': 'float64'
});
var x = new ndarray( 'float64', xbuf, [ xbuf.length ], [ 1 ], 0, 'row-major' );
console.log( ndarray2array( x ) );
var y = zerosLike( x );
console.log( ndarray2array( y ) );
var initial = scalar2ndarray( 100.0, {
'dtype': 'float64'
});
var v = dcusumkbn( [ x, y, initial ] );
console.log( ndarray2array( v ) );- Klein, Andreas. 2005. "A Generalized Kahan-Babuška-Summation-Algorithm." Computing 76 (3): 279–93. doi:10.1007/s00607-005-0139-x.