Skip to content

Commit 0d4ef60

Browse files
committed
refactor: reduce code duplication
1 parent 741144c commit 0d4ef60

File tree

3 files changed

+26
-88
lines changed

3 files changed

+26
-88
lines changed

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

Lines changed: 13 additions & 46 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
/**
@@ -56,55 +62,16 @@
5662
* // => <Float64Array>[ 4.0, 8.0, 12.0, 16.0, 20.0 ]
5763
*/
5864
function binary( arrays, shape, strides, accessors, fcn ) {
59-
var xget;
60-
var yget;
61-
var zset;
62-
var sx;
63-
var sy;
64-
var sz;
65-
var ix;
66-
var iy;
67-
var iz;
68-
var x;
69-
var y;
70-
var z;
65+
var offsets;
7166
var N;
72-
var i;
7367

7468
N = shape[ 0 ];
75-
if ( N <= 0 ) {
76-
return;
77-
}
78-
sx = strides[ 0 ];
79-
sy = strides[ 1 ];
80-
sz = strides[ 2 ];
81-
if ( sx < 0 ) {
82-
ix = (1-N) * sx;
83-
} else {
84-
ix = 0;
85-
}
86-
if ( sy < 0 ) {
87-
iy = (1-N) * sy;
88-
} else {
89-
iy = 0;
90-
}
91-
if ( sz < 0 ) {
92-
iz = (1-N) * sz;
93-
} else {
94-
iz = 0;
95-
}
96-
x = arrays[ 0 ];
97-
y = arrays[ 1 ];
98-
z = arrays[ 2 ];
99-
xget = accessors[ 0 ];
100-
yget = accessors[ 1 ];
101-
zset = accessors[ 2 ];
102-
for ( i = 0; i < N; i++ ) {
103-
zset( z, iz, fcn( xget( x, ix ), yget( y, iy ) ) );
104-
ix += sx;
105-
iy += sy;
106-
iz += sz;
107-
}
69+
offsets = [
70+
stride2offset( N, strides[ 0 ] ),
71+
stride2offset( N, strides[ 1 ] ),
72+
stride2offset( N, strides[ 2 ] )
73+
];
74+
return ndarray( arrays, shape, strides, offsets, accessors, fcn );
10875
}
10976

11077

lib/node_modules/@stdlib/strided/base/binary/lib/binary.js

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

2329
/**
@@ -47,49 +53,16 @@
4753
* // => <Float64Array>[ 2.0, 4.0, 6.0, 8.0, 10.0 ]
4854
*/
4955
function binary( arrays, shape, strides, fcn ) {
50-
var sx;
51-
var sy;
52-
var sz;
53-
var ix;
54-
var iy;
55-
var iz;
56-
var x;
57-
var y;
58-
var z;
56+
var offsets;
5957
var N;
60-
var i;
6158

6259
N = shape[ 0 ];
63-
if ( N <= 0 ) {
64-
return;
65-
}
66-
sx = strides[ 0 ];
67-
sy = strides[ 1 ];
68-
sz = strides[ 2 ];
69-
if ( sx < 0 ) {
70-
ix = (1-N) * sx;
71-
} else {
72-
ix = 0;
73-
}
74-
if ( sy < 0 ) {
75-
iy = (1-N) * sy;
76-
} else {
77-
iy = 0;
78-
}
79-
if ( sz < 0 ) {
80-
iz = (1-N) * sz;
81-
} else {
82-
iz = 0;
83-
}
84-
x = arrays[ 0 ];
85-
y = arrays[ 1 ];
86-
z = arrays[ 2 ];
87-
for ( i = 0; i < N; i++ ) {
88-
z[ iz ] = fcn( x[ ix ], y[ iy ] );
89-
ix += sx;
90-
iy += sy;
91-
iz += sz;
92-
}
60+
offsets = [
61+
stride2offset( N, strides[ 0 ] ),
62+
stride2offset( N, strides[ 1 ] ),
63+
stride2offset( N, strides[ 2 ] )
64+
];
65+
return ndarray( arrays, shape, strides, offsets, fcn );
9366
}
9467

9568

lib/node_modules/@stdlib/strided/base/binary/scripts/loops.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,9 @@ function signatures( dtypes ) {
235235

236236
// Resolve the promoted type for the current dtype pair:
237237
t3 = promotionRules( t1, t2 );
238-
239238
if ( t3 === -1 ) {
240239
continue;
241240
}
242-
243241
// Resolve single-letter dtype abbreviations:
244242
ch2 = dtypeChar( t2 );
245243
ch3 = dtypeChar( t3 );

0 commit comments

Comments
 (0)