Skip to content

Commit 3554f06

Browse files
committed
refactor: remove useless ndarray to object conversion
1 parent e3c3225 commit 3554f06

File tree

1 file changed

+19
-21
lines changed
  • lib/node_modules/@stdlib/ndarray/base/eye/lib

1 file changed

+19
-21
lines changed

lib/node_modules/@stdlib/ndarray/base/eye/lib/main.js

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020

2121
// MODULES //
2222

23-
var ndarray2object = require( '@stdlib/ndarray/base/ndarraylike2object' );
23+
var isAccessorArray = require( '@stdlib/array/base/assert/is-accessor-array' );
24+
var accessorSetter = require( '@stdlib/array/base/accessor-setter' );
2425
var isComplexDataType = require( '@stdlib/ndarray/base/assert/is-complex-floating-point-data-type' );
25-
var ctorComplex = require( '@stdlib/complex/ctors' );
26+
var ctors = require( '@stdlib/complex/ctors' );
2627
var max = require( '@stdlib/math/base/special/max' );
2728
var min = require( '@stdlib/math/base/special/min' );
2829
var zeros = require( '@stdlib/ndarray/base/zeros' );
@@ -73,7 +74,6 @@ function setter( buf, idx, v ) {
7374
*/
7475
function eye( dtype, rows, cols, k, order ) {
7576
var ctor;
76-
var tmp;
7777
var len;
7878
var buf;
7979
var set;
@@ -87,38 +87,36 @@ function eye( dtype, rows, cols, k, order ) {
8787
var c;
8888
var x;
8989

90-
x = zeros( dtype, [ rows, cols ], order );
91-
92-
if ( isComplexDataType( x.dtype ) ) {
93-
ctor = ctorComplex( x.dtype );
94-
v = new ctor( 1.0, 0.0 );
95-
} else {
96-
v = 1.0;
97-
}
98-
99-
// TODO: Use better approach instead of allocating a new object
100-
tmp = ndarray2object( x );
101-
if ( tmp.accessorProtocol === true ) {
102-
set = tmp.accessors[1];
103-
} else {
104-
set = setter;
105-
}
106-
10790
if ( k < 0 ) {
10891
r = -k;
10992
c = 0;
11093
} else {
11194
r = 0;
11295
c = k;
11396
}
114-
len = max( 0, min( rows - r, cols - c ) );
97+
98+
x = zeros( dtype, [ rows, cols ], order );
11599

116100
sr = x.strides[ 0 ];
117101
sc = x.strides[ 1 ];
118102
ix = x.offset + (r * sr) + (c * sc); // offset + (row * row_stride) + (col * col_stride)
119103
dx = sr + sc;
120104

105+
if ( isAccessorArray( x.data ) ) {
106+
set = accessorSetter( dtype );
107+
} else {
108+
set = setter;
109+
}
121110
buf = x.data;
111+
len = max( 0, min( rows - r, cols - c ) );
112+
113+
if ( isComplexDataType( dtype ) ) {
114+
ctor = ctors( dtype );
115+
v = new ctor( 1.0, 0.0 );
116+
} else {
117+
v = 1.0;
118+
}
119+
122120
for ( i = 0; i < len; i++ ) {
123121
set( buf, ix, v );
124122
ix += dx;

0 commit comments

Comments
 (0)