Skip to content

Commit 4436cd1

Browse files
committed
refactor: reduce code duplication
1 parent 6d1214c commit 4436cd1

File tree

3 files changed

+15
-59
lines changed

3 files changed

+15
-59
lines changed

lib/node_modules/@stdlib/strided/base/smskmap2/lib/main.js

Lines changed: 7 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818

1919
'use strict';
2020

21+
// MODULES //
22+
23+
var stride2offset = require( '@stdlib/strided/base/stride2offset' );
24+
var ndarray = require( './ndarray.js' );
25+
26+
2127
// MAIN //
2228

2329
/**
@@ -51,44 +57,7 @@
5157
* // => <Float32Array>[ 2.0, 4.0, 0.0, 8.0, 10.0 ]
5258
*/
5359
function smskmap2( N, x, strideX, y, strideY, mask, strideMask, z, strideZ, fcn ) { // eslint-disable-line max-len
54-
var ix;
55-
var iy;
56-
var iz;
57-
var im;
58-
var i;
59-
if ( N <= 0 ) {
60-
return z;
61-
}
62-
if ( strideX < 0 ) {
63-
ix = (1-N) * strideX;
64-
} else {
65-
ix = 0;
66-
}
67-
if ( strideY < 0 ) {
68-
iy = (1-N) * strideY;
69-
} else {
70-
iy = 0;
71-
}
72-
if ( strideZ < 0 ) {
73-
iz = (1-N) * strideZ;
74-
} else {
75-
iz = 0;
76-
}
77-
if ( strideMask < 0 ) {
78-
im = (1-N) * strideMask;
79-
} else {
80-
im = 0;
81-
}
82-
for ( i = 0; i < N; i++ ) {
83-
if ( mask[ im ] === 0 ) {
84-
z[ iz ] = fcn( x[ ix ], y[ iy ] );
85-
}
86-
ix += strideX;
87-
iy += strideY;
88-
iz += strideZ;
89-
im += strideMask;
90-
}
91-
return z;
60+
return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ), mask, strideMask, stride2offset( N, strideMask ), z, strideZ, stride2offset( N, strideZ ), fcn ); // eslint-disable-line max-len
9261
}
9362

9463

lib/node_modules/@stdlib/strided/base/smskmap2/manifest.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@
3232
],
3333
"libraries": [],
3434
"libpath": [],
35-
"dependencies": []
35+
"dependencies": [
36+
"@stdlib/strided/base/stride2offset"
37+
]
3638
}
3739
]
3840
}

lib/node_modules/@stdlib/strided/base/smskmap2/src/main.c

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818

1919
#include "stdlib/strided/base/smskmap2.h"
20+
#include "stdlib/strided/base/stride2offset.h"
2021
#include <stdint.h>
2122

2223
/**
@@ -59,26 +60,10 @@ void stdlib_strided_smskmap2( const int64_t N, const float *X, const int64_t str
5960
if ( N <= 0 ) {
6061
return;
6162
}
62-
if ( strideX < 0 ) {
63-
ix = (1-N) * strideX;
64-
} else {
65-
ix = 0;
66-
}
67-
if ( strideY < 0 ) {
68-
iy = (1-N) * strideY;
69-
} else {
70-
iy = 0;
71-
}
72-
if ( strideZ < 0 ) {
73-
iz = (1-N) * strideZ;
74-
} else {
75-
iz = 0;
76-
}
77-
if ( strideMask < 0 ) {
78-
im = (1-N) * strideMask;
79-
} else {
80-
im = 0;
81-
}
63+
ix = stdlib_strided_stride2offset( N, strideX );
64+
iy = stdlib_strided_stride2offset( N, strideY );
65+
iz = stdlib_strided_stride2offset( N, strideZ );
66+
im = stdlib_strided_stride2offset( N, strideMask );
8267
for ( i = 0; i < N; i++ ) {
8368
if ( Mask[ im ] == 0 ) {
8469
Z[ iz ] = fcn( X[ ix ], Y[ iy ] );

0 commit comments

Comments
 (0)