Skip to content

Commit 6249bfd

Browse files
committed
refactor: reduce code duplication
1 parent 320429f commit 6249bfd

File tree

1 file changed

+14
-51
lines changed
  • lib/node_modules/@stdlib/strided/base/ternary/lib

1 file changed

+14
-51
lines changed

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

Lines changed: 14 additions & 51 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
/**
@@ -47,60 +53,17 @@
4753
* // => <Float64Array>[ 3.0, 6.0, 9.0, 12.0, 15.0 ]
4854
*/
4955
function ternary( arrays, shape, strides, fcn ) {
50-
var sx;
51-
var sy;
52-
var sz;
53-
var sw;
54-
var ix;
55-
var iy;
56-
var iz;
57-
var iw;
58-
var x;
59-
var y;
60-
var z;
61-
var w;
56+
var offsets;
6257
var N;
63-
var i;
6458

6559
N = shape[ 0 ];
66-
if ( N <= 0 ) {
67-
return;
68-
}
69-
sx = strides[ 0 ];
70-
sy = strides[ 1 ];
71-
sz = strides[ 2 ];
72-
sw = strides[ 3 ];
73-
if ( sx < 0 ) {
74-
ix = (1-N) * sx;
75-
} else {
76-
ix = 0;
77-
}
78-
if ( sy < 0 ) {
79-
iy = (1-N) * sy;
80-
} else {
81-
iy = 0;
82-
}
83-
if ( sz < 0 ) {
84-
iz = (1-N) * sz;
85-
} else {
86-
iz = 0;
87-
}
88-
if ( sw < 0 ) {
89-
iw = (1-N) * sw;
90-
} else {
91-
iw = 0;
92-
}
93-
x = arrays[ 0 ];
94-
y = arrays[ 1 ];
95-
z = arrays[ 2 ];
96-
w = arrays[ 3 ];
97-
for ( i = 0; i < N; i++ ) {
98-
w[ iw ] = fcn( x[ ix ], y[ iy ], z[ iz ] );
99-
ix += sx;
100-
iy += sy;
101-
iz += sz;
102-
iw += sw;
103-
}
60+
offsets = [
61+
stride2offset( N, strides[ 0 ] ),
62+
stride2offset( N, strides[ 1 ] ),
63+
stride2offset( N, strides[ 2 ] ),
64+
stride2offset( N, strides[ 3 ] )
65+
];
66+
return ndarray( arrays, shape, strides, offsets, fcn );
10467
}
10568

10669

0 commit comments

Comments
 (0)