Skip to content

Commit 15d54c7

Browse files
committed
fix: update dapx ndarray API following dcusum pattern
1 parent 25c54a9 commit 15d54c7

8 files changed

Lines changed: 140 additions & 68 deletions

File tree

lib/node_modules/@stdlib/blas/ext/base/ndarray/dapx/README.md

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,40 +30,52 @@ limitations under the License.
3030
var dapx = require( '@stdlib/blas/ext/base/ndarray/dapx' );
3131
```
3232

33-
#### dapx( x, alpha )
33+
#### dapx( arrays )
3434

3535
Adds a scalar constant to each element in a double-precision floating-point ndarray.
3636

3737
```javascript
3838
var Float64Array = require( '@stdlib/array/float64' );
3939
var ndarray = require( '@stdlib/ndarray/ctor' );
40+
var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' );
4041

4142
var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] );
4243
var x = new ndarray( 'float64', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );
4344

44-
var out = dapx( x, 5.0 );
45-
// returns <ndarray>[ 6.0, 7.0, 8.0, 9.0 ]
45+
var alpha = scalar2ndarray( 5.0, {
46+
'dtype': 'float64'
47+
});
48+
49+
var out = dapx( [ x, alpha ] );
50+
// returns <ndarray>
51+
52+
var bool = ( out === x );
53+
// returns true
4654
```
4755

4856
The function has the following parameters:
4957

50-
- **x**: input ndarray.
51-
- **alpha**: scalar constant.
58+
- **arrays**: array-like object containing an input ndarray and a zero-dimensional ndarray containing the scalar constant.
5259

5360
Note that indexing is relative to the first index. To introduce an offset, use [`ndarray`][@stdlib/ndarray/ctor] view creation.
5461

5562
```javascript
5663
var Float64Array = require( '@stdlib/array/float64' );
5764
var ndarray = require( '@stdlib/ndarray/ctor' );
65+
var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' );
5866

5967
// Initial array:
6068
var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] );
6169

6270
// Create an ndarray view:
6371
var x = new ndarray( 'float64', xbuf, [ 3 ], [ 1 ], 2, 'row-major' );
6472

65-
var out = dapx( x, 5.0 );
66-
// returns <ndarray>[ 8.0, 9.0, 10.0 ]
73+
var alpha = scalar2ndarray( 5.0, {
74+
'dtype': 'float64'
75+
});
76+
77+
var out = dapx( [ x, alpha ] );
78+
// returns <ndarray>
6779
```
6880

6981
</section>
@@ -89,6 +101,7 @@ var out = dapx( x, 5.0 );
89101
```javascript
90102
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
91103
var ndarray = require( '@stdlib/ndarray/ctor' );
104+
var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' );
92105
var dapx = require( '@stdlib/blas/ext/base/ndarray/dapx' );
93106

94107
var xbuf = discreteUniform( 10, 0, 100, {
@@ -98,7 +111,11 @@ var x = new ndarray( 'float64', xbuf, [ 10 ], [ 1 ], 0, 'row-major' );
98111

99112
console.log( x.data );
100113

101-
dapx( x, 5.0 );
114+
var alpha = scalar2ndarray( 5.0, {
115+
'dtype': 'float64'
116+
});
117+
118+
dapx( [ x, alpha ] );
102119

103120
console.log( x.data );
104121
```

lib/node_modules/@stdlib/blas/ext/base/ndarray/dapx/benchmark/benchmark.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
2525
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
2626
var pow = require( '@stdlib/math/base/special/pow' );
2727
var ndarray = require( '@stdlib/ndarray/ctor' );
28+
var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' );
2829
var pkg = require( './../package.json' ).name;
2930
var dapx = require( './../lib' );
3031

@@ -39,11 +40,17 @@ var dapx = require( './../lib' );
3940
* @returns {Function} benchmark function
4041
*/
4142
function createBenchmark( len ) {
43+
var alpha;
44+
var xbuf;
4245
var x;
4346

44-
x = new ndarray( 'float64', discreteUniform( len, -100, 100, {
47+
xbuf = discreteUniform( len, -100, 100, {
4548
'dtype': 'float64'
46-
}), [ len ], [ 1 ], 0, 'row-major' );
49+
});
50+
x = new ndarray( 'float64', xbuf, [ len ], [ 1 ], 0, 'row-major' );
51+
alpha = scalar2ndarray( 5.0, {
52+
'dtype': 'float64'
53+
});
4754

4855
return benchmark;
4956

@@ -59,7 +66,7 @@ function createBenchmark( len ) {
5966

6067
b.tic();
6168
for ( i = 0; i < b.iterations; i++ ) {
62-
z = dapx( x, 5.0 );
69+
z = dapx( [ x, alpha ] );
6370
if ( isnanf( z.data[ i % len ] ) ) {
6471
b.fail( 'should not return NaN' );
6572
}

lib/node_modules/@stdlib/blas/ext/base/ndarray/dapx/docs/repl.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
1-
{{alias}}( x, alpha )
1+
{{alias}}( arrays )
2+
23
Adds a scalar constant to each element in a double-precision floating-
34
point ndarray.
45

56
Parameters
67
----------
7-
x: float64ndarray
8-
Input ndarray.
9-
10-
alpha: number
11-
Scalar constant.
8+
arrays: ArrayLikeObject<ndarray>
9+
Array-like object containing an input ndarray and a zero-dimensional
10+
ndarray containing the scalar constant.
1211

1312
Returns
1413
-------
15-
out: float64ndarray
14+
out: ndarray
1615
Input ndarray.
1716

1817
Examples
1918
--------
2019
> var xbuf = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0 ] );
2120
> var x = {{alias:@stdlib/ndarray/ctor}}( 'float64', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );
22-
> {{alias}}( x, 5.0 )
23-
<ndarray>[ 6.0, 7.0, 8.0, 9.0 ]
21+
> var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 5.0, 'float64', 'row-major' );
22+
> {{alias}}( [ x, alpha ] )
23+
<ndarray>
2424

2525
See Also
2626
--------

lib/node_modules/@stdlib/blas/ext/base/ndarray/dapx/docs/types/index.d.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,25 @@ import { float64ndarray } from '@stdlib/types/ndarray';
2525
/**
2626
* Adds a scalar constant to each element in a double-precision floating-point ndarray.
2727
*
28-
* @param x - input ndarray
29-
* @param alpha - scalar constant
28+
* @param arrays - array-like object containing an input ndarray and a zero-dimensional ndarray containing the scalar constant
3029
* @returns input ndarray
3130
*
3231
* @example
3332
* var Float64Array = require( '@stdlib/array/float64' );
3433
* var ndarray = require( '@stdlib/ndarray/ctor' );
34+
* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' );
3535
*
3636
* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] );
3737
* var x = new ndarray( 'float64', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );
3838
*
39-
* var out = dapx( x, 5.0 );
40-
* // returns <ndarray>[ 6.0, 7.0, 8.0, 9.0 ]
39+
* var alpha = scalar2ndarray( 5.0, {
40+
* 'dtype': 'float64'
41+
* });
42+
*
43+
* var out = dapx( [ x, alpha ] );
44+
* // returns <ndarray>
4145
*/
42-
declare function dapx( x: float64ndarray, alpha: number ): float64ndarray;
46+
declare function dapx( arrays: ArrayLike<float64ndarray> ): float64ndarray;
4347

4448

4549
// EXPORTS //

lib/node_modules/@stdlib/blas/ext/base/ndarray/dapx/docs/types/test.ts

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,47 +16,46 @@
1616
* limitations under the License.
1717
*/
1818

19+
import zeros = require( '@stdlib/ndarray/zeros' );
1920
import dapx = require( './index' );
2021

2122

2223
// TESTS //
2324

2425
// The function returns an ndarray...
2526
{
26-
const x: any = null;
27-
dapx( x, 5.0 ); // $ExpectType float64ndarray
28-
}
27+
const x = zeros( [ 10 ], {
28+
'dtype': 'float64'
29+
});
30+
const alpha = zeros( [], {
31+
'dtype': 'float64'
32+
});
2933

30-
// The compiler throws an error if the function is provided a first argument which is not an ndarray...
31-
{
32-
dapx( 123, 5.0 ); // $ExpectError
33-
dapx( true, 5.0 ); // $ExpectError
34-
dapx( false, 5.0 ); // $ExpectError
35-
dapx( null, 5.0 ); // $ExpectError
36-
dapx( undefined, 5.0 ); // $ExpectError
37-
dapx( '5', 5.0 ); // $ExpectError
38-
dapx( [ '1', '2' ], 5.0 ); // $ExpectError
39-
dapx( {}, 5.0 ); // $ExpectError
40-
dapx( ( x: number ): number => x, 5.0 ); // $ExpectError
34+
dapx( [ x, alpha ] ); // $ExpectType float64ndarray
4135
}
4236

43-
// The compiler throws an error if the function is provided a second argument which is not a number...
37+
// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays...
4438
{
45-
const x: any = null;
46-
dapx( x, '5' ); // $ExpectError
47-
dapx( x, true ); // $ExpectError
48-
dapx( x, false ); // $ExpectError
49-
dapx( x, null ); // $ExpectError
50-
dapx( x, undefined ); // $ExpectError
51-
dapx( x, [ '1' ] ); // $ExpectError
52-
dapx( x, {} ); // $ExpectError
53-
dapx( x, ( x: number ): number => x ); // $ExpectError
39+
dapx( '10' ); // $ExpectError
40+
dapx( 10 ); // $ExpectError
41+
dapx( true ); // $ExpectError
42+
dapx( false ); // $ExpectError
43+
dapx( null ); // $ExpectError
44+
dapx( undefined ); // $ExpectError
45+
dapx( [] ); // $ExpectError
46+
dapx( {} ); // $ExpectError
47+
dapx( ( x: number ): number => x ); // $ExpectError
5448
}
5549

5650
// The compiler throws an error if the function is provided an unsupported number of arguments...
5751
{
58-
const x: any = null;
52+
const x = zeros( [ 10 ], {
53+
'dtype': 'float64'
54+
});
55+
const alpha = zeros( [], {
56+
'dtype': 'float64'
57+
});
58+
5959
dapx(); // $ExpectError
60-
dapx( x ); // $ExpectError
61-
dapx( x, 5.0, 10 ); // $ExpectError
60+
dapx( [ x, alpha ], {} ); // $ExpectError
6261
}

lib/node_modules/@stdlib/blas/ext/base/ndarray/dapx/examples/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
2222
var ndarray = require( '@stdlib/ndarray/ctor' );
23+
var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' );
2324
var dapx = require( './../lib' );
2425

2526
var xbuf = discreteUniform( 10, 0, 100, {
@@ -29,6 +30,10 @@ var x = new ndarray( 'float64', xbuf, [ 10 ], [ 1 ], 0, 'row-major' );
2930

3031
console.log( x.data );
3132

32-
dapx( x, 5.0 );
33+
var alpha = scalar2ndarray( 5.0, {
34+
'dtype': 'float64'
35+
});
36+
37+
dapx( [ x, alpha ] );
3338

3439
console.log( x.data );

lib/node_modules/@stdlib/blas/ext/base/ndarray/dapx/lib/main.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,40 @@ var strided = require( '@stdlib/blas/ext/base/dapx' ).ndarray;
2525
var getStride = require( '@stdlib/ndarray/base/stride' );
2626
var getOffset = require( '@stdlib/ndarray/base/offset' );
2727
var getData = require( '@stdlib/ndarray/base/data-buffer' );
28+
var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' );
2829

2930

3031
// MAIN //
3132

3233
/**
3334
* Adds a scalar constant to each element in a double-precision floating-point ndarray.
3435
*
35-
* @param {float64ndarray} x - input ndarray
36-
* @param {number} alpha - scalar constant
37-
* @returns {float64ndarray} input ndarray
36+
* @param {ArrayLikeObject<Object>} arrays - array-like object containing an input ndarray and a zero-dimensional ndarray containing the scalar constant
37+
* @returns {Object} input ndarray
3838
*
3939
* @example
4040
* var Float64Array = require( '@stdlib/array/float64' );
4141
* var ndarray = require( '@stdlib/ndarray/ctor' );
42+
* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' );
4243
*
4344
* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] );
4445
* var x = new ndarray( 'float64', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );
4546
*
46-
* dapx( x, 5.0 );
47+
* var alpha = scalar2ndarray( 5.0, {
48+
* 'dtype': 'float64'
49+
* });
4750
*
48-
* var y = x.data;
49-
* // returns <Float64Array>[ 6.0, 7.0, 8.0, 9.0 ]
51+
* dapx( [ x, alpha ] );
52+
* // returns <ndarray>
5053
*/
51-
function dapx( x, alpha ) {
54+
function dapx( arrays ) {
5255
var buf;
5356
var sx;
5457
var ox;
5558
var N;
59+
var x;
60+
61+
x = arrays[ 0 ];
5662

5763
N = numelDimension( x, 0 );
5864
if ( N <= 0 ) {
@@ -62,7 +68,7 @@ function dapx( x, alpha ) {
6268
sx = getStride( x, 0 );
6369
ox = getOffset( x );
6470

65-
strided( N, alpha, buf, sx, ox );
71+
strided( N, ndarraylike2scalar( arrays[ 1 ] ), buf, sx, ox );
6672
return x;
6773
}
6874

0 commit comments

Comments
 (0)