@@ -28,6 +28,7 @@ var abs = require( '@stdlib/math/base/special/abs' );
2828var EPS = require ( '@stdlib/constants/float64/eps' ) ;
2929var PINF = require ( '@stdlib/constants/float64/pinf' ) ;
3030var NINF = require ( '@stdlib/constants/float64/ninf' ) ;
31+ var isAlmostEqualFloat64Array = require ( '@stdlib/assert/is-almost-equal-float64array' ) ;
3132var Float64Array = require ( '@stdlib/array/float64' ) ;
3233var cdiv = require ( './../lib/strided.js' ) ;
3334
@@ -58,6 +59,7 @@ tape( 'main export is a function', function test( t ) {
5859} ) ;
5960
6061tape ( 'the function computes a complex quotient (base behavior)' , function test ( t ) {
62+ var expected ;
6163 var out ;
6264 var z1 ;
6365 var z2 ;
@@ -66,11 +68,11 @@ tape( 'the function computes a complex quotient (base behavior)', function test(
6668 out = new Float64Array ( 2 ) ;
6769 z1 = new Float64Array ( [ 2.0 , 4.0 ] ) ;
6870 z2 = new Float64Array ( [ 1.0 , 2.0 ] ) ;
71+ expected = new Float64Array ( [ 2.0 , 0.0 ] ) ;
6972
7073 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , out , 1 , 0 ) ;
7174
72- t . strictEqual ( v [ 0 ] , 2.0 , 'returns expected value' ) ;
73- t . strictEqual ( v [ 1 ] , 0.0 , 'returns expected value' ) ;
75+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values' ) ;
7476
7577 t . end ( ) ;
7678} ) ;
@@ -656,136 +658,131 @@ tape( 'the function handles large and small numbers', function test( t ) {
656658 z1 = new Float64Array ( [ 1.0e308 , 5.0e307 ] ) ;
657659 z2 = new Float64Array ( [ 1.0 , 0.5 ] ) ;
658660 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
659- expected = [ 1.0e308 , 0.0 ] ;
661+ expected = new Float64Array ( [ 1.0e308 , 0.0 ] ) ;
660662
661- t . strictEqual ( v [ 0 ] , expected [ 0 ] , 'returns expected values' ) ;
662- t . strictEqual ( v [ 1 ] , expected [ 1 ] , 'returns expected values' ) ;
663+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values' ) ;
663664
664665 z1 = new Float64Array ( [ 1.0 , 0.5 ] ) ;
665666 z2 = new Float64Array ( [ 1.0e308 , 5.0e307 ] ) ;
666667 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
667- expected = [ 1.0e-308 , 0.0 ] ;
668+ expected = new Float64Array ( [ 1.0e-308 , 0.0 ] ) ;
668669
669- t . strictEqual ( v [ 0 ] , expected [ 0 ] , 'returns expected values' ) ;
670- t . strictEqual ( v [ 1 ] , expected [ 1 ] , 'returns expected values' ) ;
670+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values' ) ;
671671
672672 z1 = new Float64Array ( [ 1.0e-304 , 2.0e-304 ] ) ;
673673 z2 = new Float64Array ( [ 1.0 , 2.0 ] ) ;
674674 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
675- expected = [ 1.0e-304 , 0.0 ] ;
675+ expected = new Float64Array ( [ 1.0e-304 , 0.0 ] ) ;
676676
677- t . strictEqual ( v [ 0 ] , expected [ 0 ] , 'returns expected values' ) ;
678- t . strictEqual ( v [ 1 ] , expected [ 1 ] , 'returns expected values' ) ;
677+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values' ) ;
679678
680679 z1 = new Float64Array ( [ 1.0 , 2.0 ] ) ;
681680 z2 = new Float64Array ( [ 1.0e-304 , 2.0e-304 ] ) ;
682681 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
683- expected = [ 1.0e+304 , 0.0 ] ;
682+ expected = new Float64Array ( [ 1.0e+304 , 0.0 ] ) ;
684683
685- t . strictEqual ( v [ 0 ] , expected [ 0 ] , 'returns expected values' ) ;
686- t . strictEqual ( v [ 1 ] , expected [ 1 ] , 'returns expected values' ) ;
684+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values' ) ;
687685
688686 z1 = new Float64Array ( [ 2.0 , 4.0 ] ) ;
689687 z2 = new Float64Array ( [ 0.0 , 2.0 ] ) ;
690688 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
691- expected = [ 2.0 , - 1.0 ] ;
689+ expected = new Float64Array ( [ 2.0 , - 1.0 ] ) ;
692690
693- t . strictEqual ( v [ 0 ] , expected [ 0 ] , 'returns expected values' ) ;
694- t . strictEqual ( v [ 1 ] , expected [ 1 ] , 'returns expected values' ) ;
691+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values' ) ;
695692
696693 z1 = new Float64Array ( [ 1.0e-180 , 1.0e-180 ] ) ;
697694 z2 = new Float64Array ( [ 1.0 , 1.0e-180 ] ) ;
698695 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
699- expected = [ 1.0e-180 , 1.0e-180 ] ;
696+ expected = new Float64Array ( [ 1.0e-180 , 1.0e-180 ] ) ;
700697
701- t . strictEqual ( v [ 0 ] , expected [ 0 ] , 'returns expected values' ) ;
702- t . strictEqual ( v [ 1 ] , expected [ 1 ] , 'returns expected values' ) ;
698+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values' ) ;
703699
704700 t . end ( ) ;
705701} ) ;
706702
707703tape ( 'the function may overflow during complex division' , function test ( t ) {
704+ var expected ;
708705 var z1 ;
709706 var z2 ;
710707 var v ;
711708
712709 z1 = new Float64Array ( [ 1.0e308 , 1.0e308 ] ) ;
713710 z2 = new Float64Array ( [ 5.0e-324 , 5.0e-324 ] ) ;
714711 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
715- t . strictEqual ( v [ 0 ] , PINF , 'real component is +infinity' ) ;
716- t . strictEqual ( v [ 1 ] , 0.0 , 'imaginary component is 0 ' ) ;
712+ expected = new Float64Array ( [ PINF , 0.0 ] ) ;
713+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
717714
718715 z1 = new Float64Array ( [ 1.0e308 , 1.0e308 ] ) ;
719716 z2 = new Float64Array ( [ - 5.0e-324 , 5.0e-324 ] ) ;
720717 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
721- t . strictEqual ( v [ 0 ] , 0 .0, 'real component is 0' ) ;
722- t . strictEqual ( v [ 1 ] , NINF , 'imaginary component is -infinity ' ) ;
718+ expected = new Float64Array ( [ 0.0 , NINF ] ) ;
719+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
723720
724721 z1 = new Float64Array ( [ 1.0e308 , - 1.0e308 ] ) ;
725722 z2 = new Float64Array ( [ 5.0e-324 , 5.0e-324 ] ) ;
726723 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
727- t . strictEqual ( v [ 0 ] , 0 .0, 'real component is 0' ) ;
728- t . strictEqual ( v [ 1 ] , NINF , 'imaginary component is -infinity ' ) ;
724+ expected = new Float64Array ( [ 0.0 , NINF ] ) ;
725+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
729726
730727 z1 = new Float64Array ( [ - 1.0e308 , 1.0e308 ] ) ;
731728 z2 = new Float64Array ( [ 5.0e-324 , 5.0e-324 ] ) ;
732729 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
733- t . strictEqual ( v [ 0 ] , 0 .0, 'real component is 0' ) ;
734- t . strictEqual ( v [ 1 ] , PINF , 'imaginary component is +infinity ' ) ;
730+ expected = new Float64Array ( [ 0.0 , PINF ] ) ;
731+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
735732
736733 z1 = new Float64Array ( [ 1.0e308 , 1.0e308 ] ) ;
737734 z2 = new Float64Array ( [ 5.0e-324 , - 5.0e-324 ] ) ;
738735 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
739- t . strictEqual ( v [ 0 ] , 0 .0, 'real component is 0' ) ;
740- t . strictEqual ( v [ 1 ] , PINF , 'imaginary component is +infinity ' ) ;
736+ expected = new Float64Array ( [ 0.0 , PINF ] ) ;
737+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
741738
742739 z1 = new Float64Array ( [ - 1.0e308 , 1.0e308 ] ) ;
743740 z2 = new Float64Array ( [ - 5.0e-324 , 5.0e-324 ] ) ;
744741 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
745- t . strictEqual ( v [ 0 ] , PINF , 'real component is +infinity' ) ;
746- t . strictEqual ( v [ 1 ] , 0.0 , 'imaginary component is 0 ' ) ;
742+ expected = new Float64Array ( [ PINF , 0.0 ] ) ;
743+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
747744
748745 z1 = new Float64Array ( [ 1.0e308 , - 1.0e308 ] ) ;
749746 z2 = new Float64Array ( [ 5.0e-324 , - 5.0e-324 ] ) ;
750747 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
751- t . strictEqual ( v [ 0 ] , PINF , 'real component is +infinity' ) ;
752- t . strictEqual ( v [ 1 ] , 0.0 , 'imaginary component is 0 ' ) ;
748+ expected = new Float64Array ( [ PINF , 0.0 ] ) ;
749+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
753750
754751 z1 = new Float64Array ( [ 1.0e308 , - 1.0e308 ] ) ;
755752 z2 = new Float64Array ( [ - 5.0e-324 , 5.0e-324 ] ) ;
756753 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
757- t . strictEqual ( v [ 0 ] , NINF , 'real component is -infinity' ) ;
758- t . strictEqual ( v [ 1 ] , 0.0 , 'imaginary component is 0 ' ) ;
754+ expected = new Float64Array ( [ NINF , 0.0 ] ) ;
755+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
759756
760757 z1 = new Float64Array ( [ - 1.0e308 , 1.0e308 ] ) ;
761758 z2 = new Float64Array ( [ 5.0e-324 , - 5.0e-324 ] ) ;
762759 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
763- t . strictEqual ( v [ 0 ] , NINF , 'real component is -infinity' ) ;
764- t . strictEqual ( v [ 1 ] , 0.0 , 'imaginary component is 0 ' ) ;
760+ expected = new Float64Array ( [ NINF , 0.0 ] ) ;
761+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
765762
766763 z1 = new Float64Array ( [ - 1.0e308 , - 1.0e308 ] ) ;
767764 z2 = new Float64Array ( [ - 5.0e-324 , 5.0e-324 ] ) ;
768765 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
769- t . strictEqual ( v [ 0 ] , 0 .0, 'real component is 0' ) ;
770- t . strictEqual ( v [ 1 ] , PINF , 'imaginary component is +infinity ' ) ;
766+ expected = new Float64Array ( [ 0.0 , PINF ] ) ;
767+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
771768
772769 z1 = new Float64Array ( [ 1.0e308 , - 1.0e308 ] ) ;
773770 z2 = new Float64Array ( [ - 5.0e-324 , - 5.0e-324 ] ) ;
774771 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
775- t . strictEqual ( v [ 0 ] , 0 .0, 'real component is 0' ) ;
776- t . strictEqual ( v [ 1 ] , PINF , 'imaginary component is +infinity ' ) ;
772+ expected = new Float64Array ( [ 0.0 , PINF ] ) ;
773+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
777774
778775 z1 = new Float64Array ( [ - 1.0e308 , 1.0e308 ] ) ;
779776 z2 = new Float64Array ( [ - 5.0e-324 , - 5.0e-324 ] ) ;
780777 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
781- t . strictEqual ( v [ 0 ] , 0 .0, 'real component is 0' ) ;
782- t . strictEqual ( v [ 1 ] , NINF , 'imaginary component is -infinity ' ) ;
778+ expected = new Float64Array ( [ 0.0 , NINF ] ) ;
779+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
783780
784781 z1 = new Float64Array ( [ - 1.0e308 , - 1.0e308 ] ) ;
785782 z2 = new Float64Array ( [ 5.0e-324 , - 5.0e-324 ] ) ;
786783 v = cdiv ( z1 , 1 , 0 , z2 , 1 , 0 , new Float64Array ( 2 ) , 1 , 0 ) ;
787- t . strictEqual ( v [ 0 ] , 0 .0, 'real component is 0' ) ;
788- t . strictEqual ( v [ 1 ] , NINF , 'imaginary component is -infinity ' ) ;
784+ expected = new Float64Array ( [ 0.0 , NINF ] ) ;
785+ t . strictEqual ( isAlmostEqualFloat64Array ( v , expected ) , true , 'returns expected values ' ) ;
789786
790787 t . end ( ) ;
791788} ) ;
0 commit comments