Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions lib/node_modules/@stdlib/blas/ext/base/dnanasumors/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,18 @@ Computes the sum of absolute values ([_L1_ norm][l1norm]) of double-precision fl
var Float64Array = require( '@stdlib/array/float64' );

var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] );
var N = x.length;

var v = dnanasumors( N, x, 1 );
var v = dnanasumors( x.length, x, 1 );
// returns 5.0
```

The function has the following parameters:

- **N**: number of indexed elements.
- **x**: input [`Float64Array`][@stdlib/array/float64].
- **strideX**: index increment for `x`.
- **strideX**: stride length.

The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to compute the sum of absolute values ([_L1_ norm][l1norm]) for every other element in `x`,
The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to compute the sum of absolute values ([_L1_ norm][l1norm]) for every other element:

```javascript
var Float64Array = require( '@stdlib/array/float64' );
Expand Down Expand Up @@ -104,17 +103,16 @@ Computes the sum of absolute values ([_L1_ norm][l1norm]) of double-precision fl
var Float64Array = require( '@stdlib/array/float64' );

var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] );
var N = x.length;

var v = dnanasumors.ndarray( N, x, 1, 0 );
var v = dnanasumors.ndarray( x.length, x, 1, 0 );
// returns 5.0
```

The function has the following additional parameters:

- **offsetX**: starting index for `x`.
- **offsetX**: starting index.

While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to calculate the sum of absolute values ([_L1_ norm][l1norm]) for every other value in `x` starting from the second value
While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to calculate the sum of absolute values ([_L1_ norm][l1norm]) for every other value in the strided array starting from the second value:

```javascript
var Float64Array = require( '@stdlib/array/float64' );
Expand Down Expand Up @@ -153,7 +151,7 @@ var filledarrayBy = require( '@stdlib/array/filled-by' );
var dnanasumors = require( '@stdlib/blas/ext/base/dnanasumors' );

function rand() {
if ( bernoulli( 0.5 ) < 0.2 ) {
if ( bernoulli( 0.5 ) < 1 ) {
return NaN;
}
return discreteUniform( 0, 100 );
Expand Down Expand Up @@ -211,7 +209,7 @@ The function accepts the following arguments:

- **N**: `[in] CBLAS_INT` number of indexed elements.
- **X**: `[in] double*` input array.
- **strideX**: `[in] CBLAS_INT` index increment for `X`.
- **strideX**: `[in] CBLAS_INT` stride length.

```c
double stdlib_strided_dnanasumors( const CBLAS_INT N, const double *X, const CBLAS_INT strideX );
Expand All @@ -232,8 +230,8 @@ The function accepts the following arguments:

- **N**: `[in] CBLAS_INT` number of indexed elements.
- **X**: `[in] double*` input array.
- **strideX**: `[in] CBLAS_INT` index increment for `X`.
- **offsetX**: `[in] CBLAS_INT` starting index for `X`.
- **strideX**: `[in] CBLAS_INT` stride length.
- **offsetX**: `[in] CBLAS_INT` starting index.

```c
double stdlib_strided_dnanasumors_ndarray( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,19 @@ var dnanasumors = require( './../lib/dnanasumors.js' );

// FUNCTIONS //

/**
* Returns a random number.
*
* @private
* @returns {number} random number
*/
function rand() {
if ( bernoulli( 0.5 ) < 1 ) {
return uniform( -10.0, 10.0 );
}
return NaN;
}

/**
* Creates a benchmark function.
*
Expand All @@ -43,13 +56,6 @@ function createBenchmark( len ) {
var x = filledarrayBy( len, 'float64', rand );
return benchmark;

function rand() {
if ( bernoulli( 0.2 ) ) {
return NaN;
}
return uniform( -10.0, 10.0 );
}

function benchmark( b ) {
var v;
var i;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,19 @@ var opts = {

// FUNCTIONS //

/**
* Returns a random number.
*
* @private
* @returns {number} random number
*/
function rand() {
if ( bernoulli( 0.5 ) < 1 ) {
return uniform( -10.0, 10.0 );
}
return NaN;
}

/**
* Creates a benchmark function.
*
Expand All @@ -52,13 +65,6 @@ function createBenchmark( len ) {
var x = filledarrayBy( len, 'float64', rand );
return benchmark;

function rand() {
if ( bernoulli( 0.2 ) ) {
return NaN;
}
return uniform( -10.0, 10.0 );
}

function benchmark( b ) {
var v;
var i;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,19 @@ var dnanasumors = require( './../lib/ndarray.js' );

// FUNCTIONS //

/**
* Returns a random number.
*
* @private
* @returns {number} random number
*/
function rand() {
if ( bernoulli( 0.5 ) < 1 ) {
return uniform( -10.0, 10.0 );
}
return NaN;
}

/**
* Creates a benchmark function.
*
Expand All @@ -43,13 +56,6 @@ function createBenchmark( len ) {
var x = filledarrayBy( len, 'float64', rand );
return benchmark;

function rand() {
if ( bernoulli( 0.2 ) ) {
return NaN;
}
return uniform( -10.0, 10.0 );
}

function benchmark( b ) {
var v;
var i;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,19 @@ var opts = {

// FUNCTIONS //

/**
* Returns a random number.
*
* @private
* @returns {number} random number
*/
function rand() {
if ( bernoulli( 0.5 ) < 1 ) {
return uniform( -10.0, 10.0 );
}
return NaN;
}

/**
* Creates a benchmark function.
*
Expand All @@ -52,13 +65,6 @@ function createBenchmark( len ) {
var x = filledarrayBy( len, 'float64', rand );
return benchmark;

function rand() {
if ( bernoulli( 0.2 ) ) {
return NaN;
}
return uniform( -10.0, 10.0 );
}

function benchmark( b ) {
var v;
var i;
Expand Down
21 changes: 8 additions & 13 deletions lib/node_modules/@stdlib/blas/ext/base/dnanasumors/docs/repl.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
point strided array elements, ignoring `NaN` values and using ordinary
recursive summation.

The `N` and stride parameters determine which elements in `x` are accessed
at runtime.
The `N` and stride parameters determine which elements in the strided array
are accessed at runtime.

Indexing is relative to the first index. To introduce an offset, use a typed
array view.
Expand All @@ -21,7 +21,7 @@
Input array.

strideX: integer
Index increment.
Stride length.

Returns
-------
Expand All @@ -35,19 +35,15 @@
> {{alias}}( x.length, x, 1 )
5.0

// Using `N` and `stride` parameters:
// Using `N` and stride parameters:
> x = new {{alias:@stdlib/array/float64}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0, NaN, NaN ] );
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
> var stride = 2;
> {{alias}}( N, x, stride )
> {{alias}}( 4, x, 2 )
5.0

// Using view offsets:
> var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0, NaN, NaN ] );
> var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 );
> N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 );
> stride = 2;
> {{alias}}( N, x1, stride )
> {{alias}}( 4, x1, 2 )
5.0


Expand All @@ -69,7 +65,7 @@
Input array.

strideX: integer
Index increment.
Stride length.

offsetX: integer
Starting index.
Expand All @@ -88,8 +84,7 @@

// Using offset parameter:
> var x = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0, NaN, NaN ] );
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
> {{alias}}.ndarray( N, x, 2, 1 )
> {{alias}}.ndarray( 4, x, 2, 1 )
5.0

See Also
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ var filledarrayBy = require( '@stdlib/array/filled-by' );
var dnanasumors = require( './../lib' );

function rand() {
if ( bernoulli( 0.2 ) ) {
if ( bernoulli( 0.5 ) < 1 ) {
return NaN;
}
return discreteUniform( 0, 100 );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,8 @@ var ndarray = require( './ndarray.js' );
* var Float64Array = require( '@stdlib/array/float64' );
*
* var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] );
* var N = x.length;
*
* var v = dnanasumors( N, x, 1 );
* var v = dnanasumors( x.length, x, 1 );
* // returns 5.0
*/
function dnanasumors( N, x, strideX ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,8 @@ var addon = require( './../src/addon.node' );
* var Float64Array = require( '@stdlib/array/float64' );
*
* var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] );
* var N = x.length;
*
* var v = dnanasumors( N, x, 1 );
* var v = dnanasumors( x.length, x, 1 );
* // returns 5.0
*/
function dnanasumors( N, x, strideX ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,8 @@
* var dnanasumors = require( '@stdlib/blas/ext/base/dnanasumors' );
*
* var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] );
* var N = x.length;
*
* var v = dnanasumors( N, x, 1 );
* var v = dnanasumors( x.length, x, 1 );
* // returns 5.0
*
* @example
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ var abs = require( '@stdlib/math/base/special/abs' );
*
* @param {PositiveInteger} N - number of indexed elements
* @param {Float64Array} x - input array
* @param {integer} strideX - index increment
* @param {integer} strideX - stride length
* @param {NonNegativeInteger} offsetX - starting index
* @returns {number} sum
*
Expand All @@ -52,13 +52,13 @@ function dnanasumors( N, x, strideX, offsetX ) {
if ( N <= 0 ) {
return 0.0;
}
ix = offsetX;
if ( strideX === 0 ) {
if ( isnan( x[ offsetX ] ) ) {
if ( isnan( x[ ix ] ) ) {
return 0.0;
}
return abs( x[ offsetX ] ) * N;
return abs( x[ ix ] ) * N;
}
ix = offsetX;
sum = 0.0;
for ( i = 0; i < N; i++ ) {
v = x[ ix ];
Expand Down
8 changes: 4 additions & 4 deletions lib/node_modules/@stdlib/blas/ext/base/dnanasumors/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ double API_SUFFIX(stdlib_strided_dnanasumors)( const CBLAS_INT N, const double *
*
* @param N number of indexed elements
* @param X input array
* @param strideX index increment
* @param strideX stride length
* @param offsetX starting index
* @return output value
*/
Expand All @@ -53,13 +53,13 @@ double API_SUFFIX(stdlib_strided_dnanasumors_ndarray)( const CBLAS_INT N, const
if ( N <= 0 ) {
return 0.0;
}
ix = offsetX;
if ( strideX == 0 ) {
if ( stdlib_base_is_nan( X[ offsetX ] ) ) {
if ( stdlib_base_is_nan( X[ ix ] ) ) {
return 0.0;
}
return stdlib_base_abs( X[ offsetX ] ) * N;
return stdlib_base_abs( X[ ix ] ) * N;
}
ix = offsetX;
sum = 0.0;
for ( i = 0; i < N; i++ ) {
v = X[ ix ];
Expand Down