2424
2525var tape = require ( 'tape' ) ;
2626var Float32Array = require ( '@stdlib/array/float32' ) ;
27- var EPS = require ( '@stdlib/constants/float32/eps' ) ;
28- var abs = require ( '@stdlib/math/base/special/abs' ) ;
2927var sger = require ( './../lib/ndarray.js' ) ;
3028
3129
@@ -56,35 +54,6 @@ var rsa1nsa2n = require( './fixtures/row_major_sa1n_sa2n.json' );
5654var rcap = require ( './fixtures/row_major_complex_access_pattern.json' ) ;
5755
5856
59- // FUNCTIONS //
60-
61- /**
62- * Tests for element-wise approximate equality.
63- *
64- * @private
65- * @param {Object } t - test object
66- * @param {Collection } actual - actual values
67- * @param {Collection } expected - expected values
68- * @param {number } rtol - relative tolerance
69- */
70- function isApprox ( t , actual , expected , rtol ) {
71- var delta ;
72- var tol ;
73- var i ;
74-
75- t . strictEqual ( actual . length , expected . length , 'returns expected value' ) ;
76- for ( i = 0 ; i < expected . length ; i ++ ) {
77- if ( actual [ i ] === expected [ i ] ) {
78- t . strictEqual ( actual [ i ] , expected [ i ] , 'returns expected value' ) ;
79- } else {
80- delta = abs ( actual [ i ] - expected [ i ] ) ;
81- tol = rtol * EPS * abs ( expected [ i ] ) ;
82- t . ok ( delta <= tol , 'within tolerance. actual: ' + actual [ i ] + '. expected: ' + expected [ i ] + '. delta: ' + delta + '. tol: ' + tol + '.' ) ;
83- }
84- }
85- }
86-
87-
8857// TESTS //
8958
9059tape ( 'main export is a function' , function test ( t ) {
@@ -211,8 +180,8 @@ tape( 'the function the rank 1 operation `A = α*x*y^T + A` (row-major)', functi
211180 expected = new Float32Array ( data . A_out ) ;
212181
213182 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
214- isApprox ( t , a , expected , 2.0 ) ;
215183 t . strictEqual ( out , a , 'returns expected value' ) ;
184+ t . deepEqual ( out , expected , 'returns expected value' ) ;
216185 t . end ( ) ;
217186} ) ;
218187
@@ -233,8 +202,8 @@ tape( 'the function the rank 1 operation `A = α*x*y^T + A` (column-major)', fun
233202 expected = new Float32Array ( data . A_out ) ;
234203
235204 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
236- isApprox ( t , a , expected , 2.0 ) ;
237205 t . strictEqual ( out , a , 'returns expected value' ) ;
206+ t . deepEqual ( out , expected , 'returns expected value' ) ;
238207 t . end ( ) ;
239208} ) ;
240209
@@ -391,8 +360,8 @@ tape( 'the function supports specifying the strides of the first and second dime
391360 expected = new Float32Array ( data . A_out ) ;
392361
393362 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
394- isApprox ( t , a , expected , 2.0 ) ;
395363 t . strictEqual ( out , a , 'returns expected value' ) ;
364+ t . deepEqual ( out , expected , 'returns expected value' ) ;
396365 t . end ( ) ;
397366} ) ;
398367
@@ -413,8 +382,8 @@ tape( 'the function supports specifying the strides of the first and second dime
413382 expected = new Float32Array ( data . A_out ) ;
414383
415384 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
416- isApprox ( t , a , expected , 2.0 ) ;
417385 t . strictEqual ( out , a , 'returns expected value' ) ;
386+ t . deepEqual ( out , expected , 'returns expected value' ) ;
418387 t . end ( ) ;
419388} ) ;
420389
@@ -435,8 +404,8 @@ tape( 'the function supports a negative stride for the first dimension of `A` (r
435404 expected = new Float32Array ( data . A_out ) ;
436405
437406 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
438- isApprox ( t , a , expected , 2.0 ) ;
439407 t . strictEqual ( out , a , 'returns expected value' ) ;
408+ t . deepEqual ( out , expected , 'returns expected value' ) ;
440409 t . end ( ) ;
441410} ) ;
442411
@@ -457,8 +426,8 @@ tape( 'the function supports a negative stride for the first dimension of `A` (c
457426 expected = new Float32Array ( data . A_out ) ;
458427
459428 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
460- isApprox ( t , a , expected , 2.0 ) ;
461429 t . strictEqual ( out , a , 'returns expected value' ) ;
430+ t . deepEqual ( out , expected , 'returns expected value' ) ;
462431 t . end ( ) ;
463432} ) ;
464433
@@ -479,8 +448,8 @@ tape( 'the function supports a negative stride for the second dimension of `A` (
479448 expected = new Float32Array ( data . A_out ) ;
480449
481450 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
482- isApprox ( t , a , expected , 2.0 ) ;
483451 t . strictEqual ( out , a , 'returns expected value' ) ;
452+ t . deepEqual ( out , expected , 'returns expected value' ) ;
484453 t . end ( ) ;
485454} ) ;
486455
@@ -501,8 +470,8 @@ tape( 'the function supports a negative stride for the second dimension of `A` (
501470 expected = new Float32Array ( data . A_out ) ;
502471
503472 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
504- isApprox ( t , a , expected , 2.0 ) ;
505473 t . strictEqual ( out , a , 'returns expected value' ) ;
474+ t . deepEqual ( out , expected , 'returns expected value' ) ;
506475 t . end ( ) ;
507476} ) ;
508477
@@ -523,8 +492,8 @@ tape( 'the function supports negative strides for `A` (row-major)', function tes
523492 expected = new Float32Array ( data . A_out ) ;
524493
525494 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
526- isApprox ( t , a , expected , 2.0 ) ;
527495 t . strictEqual ( out , a , 'returns expected value' ) ;
496+ t . deepEqual ( out , expected , 'returns expected value' ) ;
528497 t . end ( ) ;
529498} ) ;
530499
@@ -545,8 +514,8 @@ tape( 'the function supports negative strides for `A` (column-major)', function
545514 expected = new Float32Array ( data . A_out ) ;
546515
547516 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
548- isApprox ( t , a , expected , 2.0 ) ;
549517 t . strictEqual ( out , a , 'returns expected value' ) ;
518+ t . deepEqual ( out , expected , 'returns expected value' ) ;
550519 t . end ( ) ;
551520} ) ;
552521
@@ -567,8 +536,8 @@ tape( 'the function supports specifying an offset parameter for `A` (row-major)'
567536 expected = new Float32Array ( data . A_out ) ;
568537
569538 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
570- isApprox ( t , a , expected , 2.0 ) ;
571539 t . strictEqual ( out , a , 'returns expected value' ) ;
540+ t . deepEqual ( out , expected , 'returns expected value' ) ;
572541 t . end ( ) ;
573542} ) ;
574543
@@ -589,8 +558,8 @@ tape( 'the function supports specifying an offset parameter for `A` (column-majo
589558 expected = new Float32Array ( data . A_out ) ;
590559
591560 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
592- isApprox ( t , a , expected , 2.0 ) ;
593561 t . strictEqual ( out , a , 'returns expected value' ) ;
562+ t . deepEqual ( out , expected , 'returns expected value' ) ;
594563 t . end ( ) ;
595564} ) ;
596565
@@ -611,8 +580,8 @@ tape( 'the function supports specifying `x` and `y` strides (row-major)', functi
611580 expected = new Float32Array ( data . A_out ) ;
612581
613582 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
614- isApprox ( t , a , expected , 2.0 ) ;
615583 t . strictEqual ( out , a , 'returns expected value' ) ;
584+ t . deepEqual ( out , expected , 'returns expected value' ) ;
616585 t . end ( ) ;
617586} ) ;
618587
@@ -633,8 +602,8 @@ tape( 'the function supports specifying `x` and `y` strides (column-major)', fun
633602 expected = new Float32Array ( data . A_out ) ;
634603
635604 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
636- isApprox ( t , a , expected , 2.0 ) ;
637605 t . strictEqual ( out , a , 'returns expected value' ) ;
606+ t . deepEqual ( out , expected , 'returns expected value' ) ;
638607 t . end ( ) ;
639608} ) ;
640609
@@ -655,8 +624,8 @@ tape( 'the function supports specifying a negative `x` stride (row-major)', func
655624 expected = new Float32Array ( data . A_out ) ;
656625
657626 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
658- isApprox ( t , a , expected , 2.0 ) ;
659627 t . strictEqual ( out , a , 'returns expected value' ) ;
628+ t . deepEqual ( out , expected , 'returns expected value' ) ;
660629 t . end ( ) ;
661630} ) ;
662631
@@ -677,8 +646,8 @@ tape( 'the function supports specifying a negative `x` stride (column-major)', f
677646 expected = new Float32Array ( data . A_out ) ;
678647
679648 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
680- isApprox ( t , a , expected , 2.0 ) ;
681649 t . strictEqual ( out , a , 'returns expected value' ) ;
650+ t . deepEqual ( out , expected , 'returns expected value' ) ;
682651 t . end ( ) ;
683652} ) ;
684653
@@ -699,8 +668,8 @@ tape( 'the function supports specifying a negative `y` stride (row-major)', func
699668 expected = new Float32Array ( data . A_out ) ;
700669
701670 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
702- isApprox ( t , a , expected , 2.0 ) ;
703671 t . strictEqual ( out , a , 'returns expected value' ) ;
672+ t . deepEqual ( out , expected , 'returns expected value' ) ;
704673 t . end ( ) ;
705674} ) ;
706675
@@ -721,8 +690,8 @@ tape( 'the function supports specifying a negative `y` stride (column-major)', f
721690 expected = new Float32Array ( data . A_out ) ;
722691
723692 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
724- isApprox ( t , a , expected , 2.0 ) ;
725693 t . strictEqual ( out , a , 'returns expected value' ) ;
694+ t . deepEqual ( out , expected , 'returns expected value' ) ;
726695 t . end ( ) ;
727696} ) ;
728697
@@ -743,8 +712,8 @@ tape( 'the function supports specifying negative strides for `x` and `y` (row-ma
743712 expected = new Float32Array ( data . A_out ) ;
744713
745714 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
746- isApprox ( t , a , expected , 2.0 ) ;
747715 t . strictEqual ( out , a , 'returns expected value' ) ;
716+ t . deepEqual ( out , expected , 'returns expected value' ) ;
748717 t . end ( ) ;
749718} ) ;
750719
@@ -765,8 +734,8 @@ tape( 'the function supports specifying negative strides for `x` and `y` (column
765734 expected = new Float32Array ( data . A_out ) ;
766735
767736 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
768- isApprox ( t , a , expected , 2.0 ) ;
769737 t . strictEqual ( out , a , 'returns expected value' ) ;
738+ t . deepEqual ( out , expected , 'returns expected value' ) ;
770739 t . end ( ) ;
771740} ) ;
772741
@@ -787,8 +756,8 @@ tape( 'the function supports complex access patterns (row-major)', function test
787756 expected = new Float32Array ( data . A_out ) ;
788757
789758 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
790- isApprox ( t , a , expected , 2.0 ) ;
791759 t . strictEqual ( out , a , 'returns expected value' ) ;
760+ t . deepEqual ( out , expected , 'returns expected value' ) ;
792761 t . end ( ) ;
793762} ) ;
794763
@@ -809,7 +778,7 @@ tape( 'the function supports complex access patterns (column-major)', function t
809778 expected = new Float32Array ( data . A_out ) ;
810779
811780 out = sger ( data . M , data . N , data . alpha , x , data . strideX , data . offsetX , y , data . strideY , data . offsetY , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
812- isApprox ( t , a , expected , 2.0 ) ;
813781 t . strictEqual ( out , a , 'returns expected value' ) ;
782+ t . deepEqual ( out , expected , 'returns expected value' ) ;
814783 t . end ( ) ;
815784} ) ;
0 commit comments