Skip to content

Commit e47b1be

Browse files
committed
refactor: reduce code duplication
1 parent 95cf265 commit e47b1be

File tree

2 files changed

+26
-90
lines changed

2 files changed

+26
-90
lines changed

lib/node_modules/@stdlib/strided/base/mskunary/lib/accessors.js

Lines changed: 13 additions & 48 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( './accessors.ndarray.js' );
25+
26+
2127
// MAIN //
2228

2329
/**
@@ -63,57 +69,16 @@
6369
* // => <Float64Array>[ 20.0, 40.0, 0.0, 80.0, 100.0 ]
6470
*/
6571
function mskunary( arrays, shape, strides, accessors, fcn ) {
66-
var xget;
67-
var mget;
68-
var yset;
69-
var sx;
70-
var sm;
71-
var sy;
72-
var ix;
73-
var im;
74-
var iy;
75-
var x;
76-
var m;
77-
var y;
72+
var offsets;
7873
var N;
79-
var i;
8074

8175
N = shape[ 0 ];
82-
if ( N <= 0 ) {
83-
return;
84-
}
85-
sx = strides[ 0 ];
86-
sm = strides[ 1 ];
87-
sy = strides[ 2 ];
88-
if ( sx < 0 ) {
89-
ix = (1-N) * sx;
90-
} else {
91-
ix = 0;
92-
}
93-
if ( sm < 0 ) {
94-
im = (1-N) * sm;
95-
} else {
96-
im = 0;
97-
}
98-
if ( sy < 0 ) {
99-
iy = (1-N) * sy;
100-
} else {
101-
iy = 0;
102-
}
103-
x = arrays[ 0 ];
104-
m = arrays[ 1 ];
105-
y = arrays[ 2 ];
106-
xget = accessors[ 0 ];
107-
mget = accessors[ 1 ];
108-
yset = accessors[ 2 ];
109-
for ( i = 0; i < N; i++ ) {
110-
if ( mget( m, im ) === 0 ) {
111-
yset( y, iy, fcn( xget( x, ix ) ) );
112-
}
113-
ix += sx;
114-
im += sm;
115-
iy += sy;
116-
}
76+
offsets = [
77+
stride2offset( N, strides[ 0 ] ),
78+
stride2offset( N, strides[ 1 ] ),
79+
stride2offset( N, strides[ 2 ] )
80+
];
81+
return ndarray( arrays, shape, strides, offsets, accessors, fcn );
11782
}
11883

11984

lib/node_modules/@stdlib/strided/base/mskunary/lib/unary.js

Lines changed: 13 additions & 42 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( './unary.ndarray.js' );
25+
26+
2127
// MAIN //
2228

2329
/**
@@ -51,51 +57,16 @@
5157
* // => <Float64Array>[ 10.0, 20.0, 0.0, 40.0, 50.0 ]
5258
*/
5359
function mskunary( arrays, shape, strides, fcn ) {
54-
var sx;
55-
var sm;
56-
var sy;
57-
var ix;
58-
var im;
59-
var iy;
60-
var x;
61-
var m;
62-
var y;
60+
var offsets;
6361
var N;
64-
var i;
6562

6663
N = shape[ 0 ];
67-
if ( N <= 0 ) {
68-
return;
69-
}
70-
sx = strides[ 0 ];
71-
sm = strides[ 1 ];
72-
sy = strides[ 2 ];
73-
if ( sx < 0 ) {
74-
ix = (1-N) * sx;
75-
} else {
76-
ix = 0;
77-
}
78-
if ( sm < 0 ) {
79-
im = (1-N) * sm;
80-
} else {
81-
im = 0;
82-
}
83-
if ( sy < 0 ) {
84-
iy = (1-N) * sy;
85-
} else {
86-
iy = 0;
87-
}
88-
x = arrays[ 0 ];
89-
m = arrays[ 1 ];
90-
y = arrays[ 2 ];
91-
for ( i = 0; i < N; i++ ) {
92-
if ( m[ im ] === 0 ) {
93-
y[ iy ] = fcn( x[ ix ] );
94-
}
95-
ix += sx;
96-
im += sm;
97-
iy += sy;
98-
}
64+
offsets = [
65+
stride2offset( N, strides[ 0 ] ),
66+
stride2offset( N, strides[ 1 ] ),
67+
stride2offset( N, strides[ 2 ] )
68+
];
69+
return ndarray( arrays, shape, strides, offsets, fcn );
9970
}
10071

10172

0 commit comments

Comments
 (0)