@@ -139,6 +139,45 @@ bench( pkg+'::1d:get:mode=clamp', function benchmark( b ) {
139139 b . end ( ) ;
140140} ) ;
141141
142+ bench ( pkg + '::1d:get:mode=normalize' , function benchmark ( b ) {
143+ var strides ;
144+ var buffer ;
145+ var offset ;
146+ var shape ;
147+ var order ;
148+ var opts ;
149+ var out ;
150+ var v ;
151+ var i ;
152+
153+ opts = {
154+ 'mode' : 'normalize'
155+ } ;
156+
157+ buffer = [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 ] ;
158+ shape = [ 6 ] ;
159+ strides = [ 1 ] ;
160+ offset = 0 ;
161+ order = 'row-major' ;
162+
163+ out = ndarray ( 'generic' , buffer , shape , strides , offset , order , opts ) ;
164+
165+ b . tic ( ) ;
166+ for ( i = 0 ; i < b . iterations ; i ++ ) {
167+ buffer [ 1 ] = i ;
168+ v = out . get ( ( i % 12 ) - 6 ) ;
169+ if ( v !== v ) {
170+ b . fail ( 'should not return NaN' ) ;
171+ }
172+ }
173+ b . toc ( ) ;
174+ if ( v !== v ) {
175+ b . fail ( 'should not return NaN' ) ;
176+ }
177+ b . pass ( 'benchmark finished' ) ;
178+ b . end ( ) ;
179+ } ) ;
180+
142181bench ( pkg + '::2d:get' , function benchmark ( b ) {
143182 var strides ;
144183 var buffer ;
@@ -251,6 +290,45 @@ bench( pkg+'::2d:get:mode=clamp', function benchmark( b ) {
251290 b . end ( ) ;
252291} ) ;
253292
293+ bench ( pkg + '::2d:get:mode=normalize' , function benchmark ( b ) {
294+ var strides ;
295+ var buffer ;
296+ var offset ;
297+ var shape ;
298+ var order ;
299+ var opts ;
300+ var out ;
301+ var v ;
302+ var i ;
303+
304+ opts = {
305+ 'mode' : 'normalize'
306+ } ;
307+
308+ buffer = [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 ] ;
309+ shape = [ 3 , 2 ] ;
310+ strides = [ 2 , 1 ] ;
311+ offset = 0 ;
312+ order = 'row-major' ;
313+
314+ out = ndarray ( 'generic' , buffer , shape , strides , offset , order , opts ) ;
315+
316+ b . tic ( ) ;
317+ for ( i = 0 ; i < b . iterations ; i ++ ) {
318+ buffer [ 1 ] = i ;
319+ v = out . get ( ( i % 6 ) - 3 , 1 ) ;
320+ if ( v !== v ) {
321+ b . fail ( 'should not return NaN' ) ;
322+ }
323+ }
324+ b . toc ( ) ;
325+ if ( v !== v ) {
326+ b . fail ( 'should not return NaN' ) ;
327+ }
328+ b . pass ( 'benchmark finished' ) ;
329+ b . end ( ) ;
330+ } ) ;
331+
254332bench ( pkg + '::3d:get' , function benchmark ( b ) {
255333 var strides ;
256334 var buffer ;
@@ -363,6 +441,45 @@ bench( pkg+'::3d:get:mode=clamp', function benchmark( b ) {
363441 b . end ( ) ;
364442} ) ;
365443
444+ bench ( pkg + '::3d:get:mode=normalize' , function benchmark ( b ) {
445+ var strides ;
446+ var buffer ;
447+ var offset ;
448+ var shape ;
449+ var order ;
450+ var opts ;
451+ var out ;
452+ var v ;
453+ var i ;
454+
455+ opts = {
456+ 'mode' : 'normalize'
457+ } ;
458+
459+ buffer = [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 ] ;
460+ shape = [ 1 , 3 , 2 ] ;
461+ strides = [ 6 , 2 , 1 ] ;
462+ offset = 0 ;
463+ order = 'row-major' ;
464+
465+ out = ndarray ( 'generic' , buffer , shape , strides , offset , order , opts ) ;
466+
467+ b . tic ( ) ;
468+ for ( i = 0 ; i < b . iterations ; i ++ ) {
469+ buffer [ 1 ] = i ;
470+ v = out . get ( 0 , ( i % 6 ) - 3 , 1 ) ;
471+ if ( v !== v ) {
472+ b . fail ( 'should not return NaN' ) ;
473+ }
474+ }
475+ b . toc ( ) ;
476+ if ( v !== v ) {
477+ b . fail ( 'should not return NaN' ) ;
478+ }
479+ b . pass ( 'benchmark finished' ) ;
480+ b . end ( ) ;
481+ } ) ;
482+
366483bench ( pkg + '::4d:get' , function benchmark ( b ) {
367484 var strides ;
368485 var buffer ;
@@ -475,6 +592,45 @@ bench( pkg+'::4d:get:mode=clamp', function benchmark( b ) {
475592 b . end ( ) ;
476593} ) ;
477594
595+ bench ( pkg + '::4d:get:mode=normalize' , function benchmark ( b ) {
596+ var strides ;
597+ var buffer ;
598+ var offset ;
599+ var shape ;
600+ var order ;
601+ var opts ;
602+ var out ;
603+ var v ;
604+ var i ;
605+
606+ opts = {
607+ 'mode' : 'normalize'
608+ } ;
609+
610+ buffer = [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 ] ;
611+ shape = [ 1 , 1 , 3 , 2 ] ;
612+ strides = [ 6 , 6 , 2 , 1 ] ;
613+ offset = 0 ;
614+ order = 'row-major' ;
615+
616+ out = ndarray ( 'generic' , buffer , shape , strides , offset , order , opts ) ;
617+
618+ b . tic ( ) ;
619+ for ( i = 0 ; i < b . iterations ; i ++ ) {
620+ buffer [ 1 ] = i ;
621+ v = out . get ( 0 , 0 , ( i % 6 ) - 3 , 1 ) ;
622+ if ( v !== v ) {
623+ b . fail ( 'should not return NaN' ) ;
624+ }
625+ }
626+ b . toc ( ) ;
627+ if ( v !== v ) {
628+ b . fail ( 'should not return NaN' ) ;
629+ }
630+ b . pass ( 'benchmark finished' ) ;
631+ b . end ( ) ;
632+ } ) ;
633+
478634bench ( pkg + '::5d:get' , function benchmark ( b ) {
479635 var strides ;
480636 var buffer ;
@@ -586,3 +742,42 @@ bench( pkg+'::5d:get:mode=clamp', function benchmark( b ) {
586742 b . pass ( 'benchmark finished' ) ;
587743 b . end ( ) ;
588744} ) ;
745+
746+ bench ( pkg + '::5d:get:mode=normalize' , function benchmark ( b ) {
747+ var strides ;
748+ var buffer ;
749+ var offset ;
750+ var shape ;
751+ var order ;
752+ var opts ;
753+ var out ;
754+ var v ;
755+ var i ;
756+
757+ opts = {
758+ 'mode' : 'normalize'
759+ } ;
760+
761+ buffer = [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 ] ;
762+ shape = [ 1 , 1 , 1 , 3 , 2 ] ;
763+ strides = [ 6 , 6 , 6 , 2 , 1 ] ;
764+ offset = 0 ;
765+ order = 'row-major' ;
766+
767+ out = ndarray ( 'generic' , buffer , shape , strides , offset , order , opts ) ;
768+
769+ b . tic ( ) ;
770+ for ( i = 0 ; i < b . iterations ; i ++ ) {
771+ buffer [ 1 ] = i ;
772+ v = out . get ( 0 , 0 , 0 , ( i % 6 ) - 3 , 1 ) ;
773+ if ( v !== v ) {
774+ b . fail ( 'should not return NaN' ) ;
775+ }
776+ }
777+ b . toc ( ) ;
778+ if ( v !== v ) {
779+ b . fail ( 'should not return NaN' ) ;
780+ }
781+ b . pass ( 'benchmark finished' ) ;
782+ b . end ( ) ;
783+ } ) ;
0 commit comments