Skip to content

Commit 6d1214c

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

File tree

3 files changed

+14
-47
lines changed

3 files changed

+14
-47
lines changed

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

+7-31
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,37 +57,7 @@
5157
* // => <Float32Array>[ 10.0, 20.0, 0.0, 40.0, 50.0 ]
5258
*/
5359
function smskmap( N, x, strideX, mask, strideMask, y, strideY, fcn ) {
54-
var ix;
55-
var im;
56-
var iy;
57-
var i;
58-
if ( N <= 0 ) {
59-
return y;
60-
}
61-
if ( strideX < 0 ) {
62-
ix = (1-N) * strideX;
63-
} else {
64-
ix = 0;
65-
}
66-
if ( strideMask < 0 ) {
67-
im = (1-N) * strideMask;
68-
} else {
69-
im = 0;
70-
}
71-
if ( strideY < 0 ) {
72-
iy = (1-N) * strideY;
73-
} else {
74-
iy = 0;
75-
}
76-
for ( i = 0; i < N; i++ ) {
77-
if ( mask[ im ] === 0 ) {
78-
y[ iy ] = fcn( x[ ix ] );
79-
}
80-
ix += strideX;
81-
im += strideMask;
82-
iy += strideY;
83-
}
84-
return y;
60+
return ndarray( N, x, strideX, stride2offset( N, strideX ), mask, strideMask, stride2offset( N, strideMask ), y, strideY, stride2offset( N, strideY ), fcn ); // eslint-disable-line max-len
8561
}
8662

8763

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

+3-1
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/smskmap/src/main.c

+4-15
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818

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

2223
/**
@@ -55,21 +56,9 @@ void stdlib_strided_smskmap( const int64_t N, const float *X, const int64_t stri
5556
if ( N <= 0 ) {
5657
return;
5758
}
58-
if ( strideX < 0 ) {
59-
ix = (1-N) * strideX;
60-
} else {
61-
ix = 0;
62-
}
63-
if ( strideMask < 0 ) {
64-
im = (1-N) * strideMask;
65-
} else {
66-
im = 0;
67-
}
68-
if ( strideY < 0 ) {
69-
iy = (1-N) * strideY;
70-
} else {
71-
iy = 0;
72-
}
59+
ix = stdlib_strided_stride2offset( N, strideX );
60+
im = stdlib_strided_stride2offset( N, strideMask );
61+
iy = stdlib_strided_stride2offset( N, strideY );
7362
for ( i = 0; i < N; i++ ) {
7463
if ( Mask[ im ] == 0 ) {
7564
Y[ iy ] = fcn( X[ ix ] );

0 commit comments

Comments
 (0)