Skip to content

Commit 4433c86

Browse files
committed
feat: add ndarray/fancy
1 parent 16cf3fd commit 4433c86

31 files changed

Lines changed: 6096 additions & 0 deletions

lib/node_modules/@stdlib/ndarray/fancy/README.md

Lines changed: 788 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 391 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,391 @@
1+
/**
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2023 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
'use strict';
20+
21+
// MODULES //
22+
23+
var bench = require( '@stdlib/bench' );
24+
var pkg = require( './../package.json' ).name;
25+
var ndarray = require( './../lib' );
26+
27+
28+
// MAIN //
29+
30+
bench( pkg+'::get:byteLength', function benchmark( b ) {
31+
var strides;
32+
var buffer;
33+
var offset;
34+
var shape;
35+
var order;
36+
var out;
37+
var v;
38+
var i;
39+
40+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
41+
shape = [ 3, 2 ];
42+
strides = [ 2, 1 ];
43+
offset = 0;
44+
order = 'row-major';
45+
46+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
47+
48+
b.tic();
49+
for ( i = 0; i < b.iterations; i++ ) {
50+
v = out.byteLength;
51+
if ( v !== null ) {
52+
b.fail( 'should return null' );
53+
}
54+
}
55+
b.toc();
56+
if ( v !== null ) {
57+
b.fail( 'should return null' );
58+
}
59+
b.pass( 'benchmark finished' );
60+
b.end();
61+
});
62+
63+
bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) {
64+
var strides;
65+
var buffer;
66+
var offset;
67+
var shape;
68+
var order;
69+
var out;
70+
var v;
71+
var i;
72+
73+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
74+
shape = [ 3, 2 ];
75+
strides = [ 2, 1 ];
76+
offset = 0;
77+
order = 'row-major';
78+
79+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
80+
81+
b.tic();
82+
for ( i = 0; i < b.iterations; i++ ) {
83+
v = out.BYTES_PER_ELEMENT;
84+
if ( v !== null ) {
85+
b.fail( 'should return null' );
86+
}
87+
}
88+
b.toc();
89+
if ( v !== null ) {
90+
b.fail( 'should return null' );
91+
}
92+
b.pass( 'benchmark finished' );
93+
b.end();
94+
});
95+
96+
bench( pkg+'::get:data', function benchmark( b ) {
97+
var strides;
98+
var buffer;
99+
var offset;
100+
var shape;
101+
var order;
102+
var out;
103+
var v;
104+
var i;
105+
106+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
107+
shape = [ 3, 2 ];
108+
strides = [ 2, 1 ];
109+
offset = 0;
110+
order = 'row-major';
111+
112+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
113+
114+
b.tic();
115+
for ( i = 0; i < b.iterations; i++ ) {
116+
v = out.data;
117+
if ( v.length !== 6 ) {
118+
b.fail( 'should return expected length' );
119+
}
120+
}
121+
b.toc();
122+
if ( v.length !== 6 ) {
123+
b.fail( 'should return expected length' );
124+
}
125+
b.pass( 'benchmark finished' );
126+
b.end();
127+
});
128+
129+
bench( pkg+'::get:dtype', function benchmark( b ) {
130+
var strides;
131+
var buffer;
132+
var offset;
133+
var shape;
134+
var order;
135+
var out;
136+
var v;
137+
var i;
138+
139+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
140+
shape = [ 3, 2 ];
141+
strides = [ 2, 1 ];
142+
offset = 0;
143+
order = 'row-major';
144+
145+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
146+
147+
b.tic();
148+
for ( i = 0; i < b.iterations; i++ ) {
149+
v = out.dtype;
150+
if ( v !== 'generic' ) {
151+
b.fail( 'should return expected data type' );
152+
}
153+
}
154+
b.toc();
155+
if ( v !== 'generic' ) {
156+
b.fail( 'should return expected data type' );
157+
}
158+
b.pass( 'benchmark finished' );
159+
b.end();
160+
});
161+
162+
bench( pkg+'::get:flags', function benchmark( b ) {
163+
var strides;
164+
var buffer;
165+
var offset;
166+
var shape;
167+
var order;
168+
var out;
169+
var v;
170+
var i;
171+
172+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
173+
shape = [ 3, 2 ];
174+
strides = [ 2, 1 ];
175+
offset = 0;
176+
order = 'row-major';
177+
178+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
179+
180+
b.tic();
181+
for ( i = 0; i < b.iterations; i++ ) {
182+
v = out.flags;
183+
if ( typeof v !== 'object' ) {
184+
b.fail( 'should return an object' );
185+
}
186+
}
187+
b.toc();
188+
if ( typeof v !== 'object' ) {
189+
b.fail( 'should return an object' );
190+
}
191+
b.pass( 'benchmark finished' );
192+
b.end();
193+
});
194+
195+
bench( pkg+'::get:length', function benchmark( b ) {
196+
var strides;
197+
var buffer;
198+
var offset;
199+
var shape;
200+
var order;
201+
var out;
202+
var v;
203+
var i;
204+
205+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
206+
shape = [ 3, 2 ];
207+
strides = [ 2, 1 ];
208+
offset = 0;
209+
order = 'row-major';
210+
211+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
212+
213+
b.tic();
214+
for ( i = 0; i < b.iterations; i++ ) {
215+
v = out.length;
216+
if ( v !== buffer.length ) {
217+
b.fail( 'should return expected length' );
218+
}
219+
}
220+
b.toc();
221+
if ( v !== buffer.length ) {
222+
b.fail( 'should return expected length' );
223+
}
224+
b.pass( 'benchmark finished' );
225+
b.end();
226+
});
227+
228+
bench( pkg+'::get:ndims', function benchmark( b ) {
229+
var strides;
230+
var buffer;
231+
var offset;
232+
var shape;
233+
var order;
234+
var out;
235+
var v;
236+
var i;
237+
238+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
239+
shape = [ 3, 2 ];
240+
strides = [ 2, 1 ];
241+
offset = 0;
242+
order = 'row-major';
243+
244+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
245+
246+
b.tic();
247+
for ( i = 0; i < b.iterations; i++ ) {
248+
v = out.ndims;
249+
if ( v !== shape.length ) {
250+
b.fail( 'should return expected number of dimensions' );
251+
}
252+
}
253+
b.toc();
254+
if ( v !== shape.length ) {
255+
b.fail( 'should return expected number of dimensions' );
256+
}
257+
b.pass( 'benchmark finished' );
258+
b.end();
259+
});
260+
261+
bench( pkg+'::get:offset', function benchmark( b ) {
262+
var strides;
263+
var buffer;
264+
var offset;
265+
var shape;
266+
var order;
267+
var out;
268+
var v;
269+
var i;
270+
271+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
272+
shape = [ 3, 2 ];
273+
strides = [ 2, 1 ];
274+
offset = 0;
275+
order = 'row-major';
276+
277+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
278+
279+
b.tic();
280+
for ( i = 0; i < b.iterations; i++ ) {
281+
v = out.offset;
282+
if ( v !== offset ) {
283+
b.fail( 'should return expected offset' );
284+
}
285+
}
286+
b.toc();
287+
if ( v !== offset ) {
288+
b.fail( 'should return expected offset' );
289+
}
290+
b.pass( 'benchmark finished' );
291+
b.end();
292+
});
293+
294+
bench( pkg+'::get:order', function benchmark( b ) {
295+
var strides;
296+
var buffer;
297+
var offset;
298+
var shape;
299+
var order;
300+
var out;
301+
var v;
302+
var i;
303+
304+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
305+
shape = [ 3, 2 ];
306+
strides = [ 2, 1 ];
307+
offset = 0;
308+
order = 'row-major';
309+
310+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
311+
312+
b.tic();
313+
for ( i = 0; i < b.iterations; i++ ) {
314+
v = out.order;
315+
if ( v !== order ) {
316+
b.fail( 'should return expected order' );
317+
}
318+
}
319+
b.toc();
320+
if ( v !== order ) {
321+
b.fail( 'should return expected order' );
322+
}
323+
b.pass( 'benchmark finished' );
324+
b.end();
325+
});
326+
327+
bench( pkg+'::get:shape', function benchmark( b ) {
328+
var strides;
329+
var buffer;
330+
var offset;
331+
var shape;
332+
var order;
333+
var out;
334+
var v;
335+
var i;
336+
337+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
338+
shape = [ 3, 2 ];
339+
strides = [ 2, 1 ];
340+
offset = 0;
341+
order = 'row-major';
342+
343+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
344+
345+
b.tic();
346+
for ( i = 0; i < b.iterations; i++ ) {
347+
v = out.shape;
348+
if ( v.length !== shape.length ) {
349+
b.fail( 'should return expected length' );
350+
}
351+
}
352+
b.toc();
353+
if ( v.length !== shape.length ) {
354+
b.fail( 'should return expected length' );
355+
}
356+
b.pass( 'benchmark finished' );
357+
b.end();
358+
});
359+
360+
bench( pkg+'::get:strides', function benchmark( b ) {
361+
var strides;
362+
var buffer;
363+
var offset;
364+
var shape;
365+
var order;
366+
var out;
367+
var v;
368+
var i;
369+
370+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
371+
shape = [ 3, 2 ];
372+
strides = [ 2, 1 ];
373+
offset = 0;
374+
order = 'row-major';
375+
376+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
377+
378+
b.tic();
379+
for ( i = 0; i < b.iterations; i++ ) {
380+
v = out.strides;
381+
if ( v.length !== strides.length ) {
382+
b.fail( 'should return expected length' );
383+
}
384+
}
385+
b.toc();
386+
if ( v.length !== strides.length ) {
387+
b.fail( 'should return expected length' );
388+
}
389+
b.pass( 'benchmark finished' );
390+
b.end();
391+
});

0 commit comments

Comments
 (0)