@@ -27,8 +27,8 @@ describe('.parse() math-trig formulas', () => {
2727 } ) ;
2828
2929 it ( 'ACOT' , ( ) => {
30- expect ( parser . parse ( 'ACOT(1)' ) ) . to . deep . equal ( { error : null , result : 0.7853981633974483 } ) ;
31- expect ( parser . parse ( 'ACOT(-1)' ) ) . to . deep . equal ( { error : null , result : - 0.7853981633974483 } ) ;
30+ expect ( parser . parse ( 'ACOT(1)' ) ) . to . almost . eql ( { error : null , result : 0.7853981633974483 } , 1e-9 ) ;
31+ expect ( parser . parse ( 'ACOT(-1)' ) ) . to . almost . eql ( { error : null , result : - 0.7853981633974483 } , 1e-9 ) ;
3232 } ) ;
3333
3434 it ( 'ACOTH' , ( ) => {
@@ -65,26 +65,26 @@ describe('.parse() math-trig formulas', () => {
6565 it ( 'ASIN' , ( ) => {
6666 expect ( parser . parse ( 'ASIN()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
6767 expect ( parser . parse ( 'ASIN("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
68- expect ( parser . parse ( 'ASIN(0.5)' ) ) . to . deep . equal ( { error : null , result : 0.5235987755982988 } ) ;
68+ expect ( parser . parse ( 'ASIN(0.5)' ) ) . to . almost . eql ( { error : null , result : 0.5235987755982989 } , 1e-9 ) ;
6969 } ) ;
7070
7171 it ( 'ASINH' , ( ) => {
7272 expect ( parser . parse ( 'ASINH()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
7373 expect ( parser . parse ( 'ASINH("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
74- expect ( parser . parse ( 'ASINH(0.5)' ) ) . to . deep . equal ( { error : null , result : 0.48121182505960347 } ) ;
74+ expect ( parser . parse ( 'ASINH(0.5)' ) ) . to . almost . eql ( { error : null , result : 0.48121182505960347 } , 1e-9 ) ;
7575 } ) ;
7676
7777 it ( 'ATAN' , ( ) => {
7878 expect ( parser . parse ( 'ATAN()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
7979 expect ( parser . parse ( 'ATAN("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
80- expect ( parser . parse ( 'ATAN(0.5)' ) ) . to . deep . equal ( { error : null , result : 0.46364760900080615 } ) ;
80+ expect ( parser . parse ( 'ATAN(0.5)' ) ) . to . almost . eql ( { error : null , result : 0.4636476090008061 } , 1e-9 ) ;
8181 } ) ;
8282
8383 it ( 'ATAN2' , ( ) => {
8484 expect ( parser . parse ( 'ATAN2()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
8585 expect ( parser . parse ( 'ATAN2(1)' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
8686 expect ( parser . parse ( 'ATAN2("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
87- expect ( parser . parse ( 'ATAN2(1, 1)' ) ) . to . deep . equal ( { error : null , result : 0.7853981633974483 } ) ;
87+ expect ( parser . parse ( 'ATAN2(1, 1)' ) ) . to . almost . eql ( { error : null , result : 0.7853981633974483 } , 1e-9 ) ;
8888 } ) ;
8989
9090 it ( 'ATANH' , ( ) => {
@@ -135,46 +135,46 @@ describe('.parse() math-trig formulas', () => {
135135 expect ( parser . parse ( 'COS()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
136136 expect ( parser . parse ( 'COS("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
137137 expect ( parser . parse ( 'COS(0)' ) ) . to . deep . equal ( { error : null , result : 1 } ) ;
138- expect ( parser . parse ( 'COS(1)' ) ) . to . deep . equal ( { error : null , result : 0.5403023058681398 } ) ;
138+ expect ( parser . parse ( 'COS(1)' ) ) . to . almost . eql ( { error : null , result : 0.5403023058681398 } , 1e-9 ) ;
139139 } ) ;
140140
141141 it ( 'COSH' , ( ) => {
142142 expect ( parser . parse ( 'COSH()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
143143 expect ( parser . parse ( 'COSH("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
144144 expect ( parser . parse ( 'COSH(0)' ) ) . to . deep . equal ( { error : null , result : 1 } ) ;
145- expect ( parser . parse ( 'COSH(1)' ) ) . to . deep . equal ( { error : null , result : 1.5430806348152437 } ) ;
145+ expect ( parser . parse ( 'COSH(1)' ) ) . to . almost . eql ( { error : null , result : 1.5430806348152437 } , 1e-9 ) ;
146146 } ) ;
147147
148148 it ( 'COT' , ( ) => {
149149 expect ( parser . parse ( 'COT()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
150150 expect ( parser . parse ( 'COT("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
151151 expect ( parser . parse ( 'COT(0)' ) ) . to . deep . equal ( { error : null , result : Infinity } ) ;
152- expect ( parser . parse ( 'COT(1)' ) ) . to . deep . equal ( { error : null , result : 0.6420926159343306 } ) ;
153- expect ( parser . parse ( 'COT(2)' ) ) . to . deep . equal ( { error : null , result : - 0.45765755436028577 } ) ;
152+ expect ( parser . parse ( 'COT(1)' ) ) . to . almost . eql ( { error : null , result : 0.6420926159343306 } , 1e-9 ) ;
153+ expect ( parser . parse ( 'COT(2)' ) ) . to . almost . eql ( { error : null , result : - 0.45765755436028577 } , 1e-9 ) ;
154154 } ) ;
155155
156156 it ( 'COTH' , ( ) => {
157157 expect ( parser . parse ( 'COTH()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
158158 expect ( parser . parse ( 'COTH("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
159159 expect ( parser . parse ( 'COTH(0)' ) ) . to . deep . equal ( { error : null , result : Infinity } ) ;
160- expect ( parser . parse ( 'COTH(1)' ) ) . to . deep . equal ( { error : null , result : 1.3130352854993312 } ) ;
161- expect ( parser . parse ( 'COTH(2)' ) ) . to . deep . equal ( { error : null , result : 1.0373147207275482 } ) ;
160+ expect ( parser . parse ( 'COTH(1)' ) ) . to . almost . eql ( { error : null , result : 1.3130352854993312 } , 1e-9 ) ;
161+ expect ( parser . parse ( 'COTH(2)' ) ) . to . almost . eql ( { error : null , result : 1.0373147207275482 } , 1e-9 ) ;
162162 } ) ;
163163
164164 it ( 'CSC' , ( ) => {
165165 expect ( parser . parse ( 'CSC()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
166166 expect ( parser . parse ( 'CSC("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
167167 expect ( parser . parse ( 'CSC(0)' ) ) . to . deep . equal ( { error : null , result : Infinity } ) ;
168- expect ( parser . parse ( 'CSC(1)' ) ) . to . deep . equal ( { error : null , result : 1.1883951057781212 } ) ;
169- expect ( parser . parse ( 'CSC(2)' ) ) . to . deep . equal ( { error : null , result : 1.0997501702946164 } ) ;
168+ expect ( parser . parse ( 'CSC(1)' ) ) . to . almost . eql ( { error : null , result : 1.1883951057781212 } , 1e-9 ) ;
169+ expect ( parser . parse ( 'CSC(2)' ) ) . to . almost . eql ( { error : null , result : 1.0997501702946164 } , 1e-9 ) ;
170170 } ) ;
171171
172172 it ( 'CSCH' , ( ) => {
173173 expect ( parser . parse ( 'CSCH()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
174174 expect ( parser . parse ( 'CSCH("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
175175 expect ( parser . parse ( 'CSCH(0)' ) ) . to . deep . equal ( { error : null , result : Infinity } ) ;
176- expect ( parser . parse ( 'CSCH(1)' ) ) . to . deep . equal ( { error : null , result : 0.8509181282393216 } ) ;
177- expect ( parser . parse ( 'CSCH(2)' ) ) . to . deep . equal ( { error : null , result : 0.27572056477178325 } ) ;
176+ expect ( parser . parse ( 'CSCH(1)' ) ) . to . almost . eql ( { error : null , result : 0.8509181282393216 } , 1e-9 ) ;
177+ expect ( parser . parse ( 'CSCH(2)' ) ) . to . almost . eql ( { error : null , result : 0.27572056477178325 } , 1e-9 ) ;
178178 } ) ;
179179
180180 it ( 'DECIMAL' , ( ) => {
@@ -191,7 +191,7 @@ describe('.parse() math-trig formulas', () => {
191191 expect ( parser . parse ( 'DEGREES("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
192192 expect ( parser . parse ( 'DEGREES(PI())' ) ) . to . deep . equal ( { error : null , result : 180 } ) ;
193193 expect ( parser . parse ( 'DEGREES(PI() / 2)' ) ) . to . deep . equal ( { error : null , result : 90 } ) ;
194- expect ( parser . parse ( 'DEGREES(1.1)' ) ) . to . deep . equal ( { error : null , result : 63.02535746439057 } ) ;
194+ expect ( parser . parse ( 'DEGREES(1.1)' ) ) . to . almost . eql ( { error : null , result : 63.02535746439057 } , 1e-9 ) ;
195195 } ) ;
196196
197197 it ( 'DIVIDE' , ( ) => {
@@ -327,9 +327,9 @@ describe('.parse() math-trig formulas', () => {
327327 expect ( parser . parse ( 'MINUS("value")' ) ) . to . deep . equal ( { error : '#N/A' , result : null } ) ;
328328 expect ( parser . parse ( 'MINUS(1)' ) ) . to . deep . equal ( { error : '#N/A' , result : null } ) ;
329329 expect ( parser . parse ( 'MINUS(1, 2)' ) ) . to . deep . equal ( { error : null , result : - 1 } ) ;
330- expect ( parser . parse ( 'MINUS(1.1, 1.2)' ) ) . to . deep . equal ( { error : null , result : - 0.09999999999999987 } ) ; // JavaScript engine number precision
330+ expect ( parser . parse ( 'MINUS(1.1, 1.2)' ) ) . to . almost . eql ( { error : null , result : - 0.1 } , 1e-9 ) ;
331331 expect ( parser . parse ( 'MINUS(1.2, 1.2)' ) ) . to . deep . equal ( { error : null , result : 0 } ) ;
332- expect ( parser . parse ( 'MINUS(1.3, 1.2)' ) ) . to . deep . equal ( { error : null , result : 0.10000000000000009 } ) ; // JavaScript engine number precision
332+ expect ( parser . parse ( 'MINUS(1.3, 1.2)' ) ) . to . almost . eql ( { error : null , result : 0.1 } , 1e-9 ) ;
333333 } ) ;
334334
335335 it ( 'MOD' , ( ) => {
@@ -490,15 +490,15 @@ describe('.parse() math-trig formulas', () => {
490490 it ( 'SEC' , ( ) => {
491491 expect ( parser . parse ( 'SEC()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
492492 expect ( parser . parse ( 'SEC("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
493- expect ( parser . parse ( 'SEC(1)' ) ) . to . deep . equal ( { error : null , result : 1.8508157176809255 } ) ;
494- expect ( parser . parse ( 'SEC(30)' ) ) . to . deep . equal ( { error : null , result : 6.482921234962678 } ) ;
493+ expect ( parser . parse ( 'SEC(1)' ) ) . to . almost . eql ( { error : null , result : 1.8508157176809255 } , 1e-9 ) ;
494+ expect ( parser . parse ( 'SEC(30)' ) ) . to . almost . eql ( { error : null , result : 6.482921234962678 } , 1e-9 ) ;
495495 } ) ;
496496
497497 it ( 'SECH' , ( ) => {
498498 expect ( parser . parse ( 'SECH()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
499499 expect ( parser . parse ( 'SECH("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
500- expect ( parser . parse ( 'SECH(1)' ) ) . to . deep . equal ( { error : null , result : 0.6480542736638855 } ) ;
501- expect ( parser . parse ( 'SECH(30)' ) ) . to . deep . equal ( { error : null , result : 1.8715245937680314e-13 } ) ;
500+ expect ( parser . parse ( 'SECH(1)' ) ) . to . almost . eql ( { error : null , result : 0.6480542736638855 } , 1e-9 ) ;
501+ expect ( parser . parse ( 'SECH(30)' ) ) . to . almost . eql ( { error : null , result : 1.8715245937680314e-13 } , 1e-9 ) ;
502502 } ) ;
503503
504504 it ( 'SERIESSUM' , ( ) => {
@@ -509,7 +509,7 @@ describe('.parse() math-trig formulas', () => {
509509 - 1 / parser . parse ( 'FACT(6)' ) . result ,
510510 ] ) ;
511511
512- expect ( parser . parse ( 'SERIESSUM(PI() / 4, 0, 2, SERIESSUM_ARR)' ) ) . to . deep . equal ( { error : null , result : 0.7071032148228457 } ) ;
512+ expect ( parser . parse ( 'SERIESSUM(PI() / 4, 0, 2, SERIESSUM_ARR)' ) ) . to . almost . eql ( { error : null , result : 0.7071032148228457 } , 1e-9 ) ;
513513 } ) ;
514514
515515 it ( 'SIGN' , ( ) => {
@@ -530,7 +530,7 @@ describe('.parse() math-trig formulas', () => {
530530 it ( 'SINH' , ( ) => {
531531 expect ( parser . parse ( 'SINH()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
532532 expect ( parser . parse ( 'SINH("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
533- expect ( parser . parse ( 'SINH(1)' ) ) . to . deep . equal ( { error : null , result : 1.1752011936438014 } ) ;
533+ expect ( parser . parse ( 'SINH(1)' ) ) . to . almost . eql ( { error : null , result : 1.1752011936438014 } , 1e-9 ) ;
534534 } ) ;
535535
536536 it ( 'SQRT' , ( ) => {
@@ -544,7 +544,7 @@ describe('.parse() math-trig formulas', () => {
544544 it ( 'SQRTPI' , ( ) => {
545545 expect ( parser . parse ( 'SQRTPI()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
546546 expect ( parser . parse ( 'SQRTPI("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
547- expect ( parser . parse ( 'SQRTPI(64)' ) ) . to . deep . equal ( { error : null , result : 14.179630807244127 } ) ;
547+ expect ( parser . parse ( 'SQRTPI(64)' ) ) . to . almost . eql ( { error : null , result : 14.179630807244127 } , 1e-9 ) ;
548548 } ) ;
549549
550550 it ( 'SUBTOTAL' , ( ) => { } ) ;
@@ -553,7 +553,7 @@ describe('.parse() math-trig formulas', () => {
553553 expect ( parser . parse ( 'SUM()' ) ) . to . deep . equal ( { error : null , result : 0 } ) ;
554554 expect ( parser . parse ( 'SUM("value")' ) ) . to . deep . equal ( { error : null , result : 0 } ) ;
555555 expect ( parser . parse ( 'SUM(64)' ) ) . to . deep . equal ( { error : null , result : 64 } ) ;
556- expect ( parser . parse ( 'SUM(64, 3.3, 0.1)' ) ) . to . deep . equal ( { error : null , result : 67.39999999999999 } ) ;
556+ expect ( parser . parse ( 'SUM(64, 3.3, 0.1)' ) ) . to . almost . eql ( { error : null , result : 67.4 } , 1e-9 ) ;
557557 } ) ;
558558
559559 it ( 'SUMIF' , ( ) => {
@@ -588,7 +588,7 @@ describe('.parse() math-trig formulas', () => {
588588 expect ( parser . parse ( 'SUMSQ()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
589589 expect ( parser . parse ( 'SUMSQ("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
590590 expect ( parser . parse ( 'SUMSQ(64)' ) ) . to . deep . equal ( { error : null , result : 4096 } ) ;
591- expect ( parser . parse ( 'SUMSQ(64, 3.3, 0.1)' ) ) . to . deep . equal ( { error : null , result : 4106.900000000001 } ) ;
591+ expect ( parser . parse ( 'SUMSQ(64, 3.3, 0.1)' ) ) . to . almost . eql ( { error : null , result : 4106.9 } , 1e-9 ) ;
592592 } ) ;
593593
594594 it ( 'SUMX2MY2' , ( ) => {
@@ -630,14 +630,14 @@ describe('.parse() math-trig formulas', () => {
630630 it ( 'TAN' , ( ) => {
631631 expect ( parser . parse ( 'TAN()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
632632 expect ( parser . parse ( 'TAN("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
633- expect ( parser . parse ( 'TAN(1)' ) ) . to . deep . equal ( { error : null , result : 1.5574077246549023 } ) ;
634- expect ( parser . parse ( 'TAN(RADIANS(45))' ) ) . to . deep . equal ( { error : null , result : 0.9999999999999999 } ) ;
633+ expect ( parser . parse ( 'TAN(1)' ) ) . to . almost . eql ( { error : null , result : 1.5574077246549023 } , 1e-9 ) ;
634+ expect ( parser . parse ( 'TAN(RADIANS(45))' ) ) . to . almost . eql ( { error : null , result : 1 } , 1e-9 ) ;
635635 } ) ;
636636
637637 it ( 'TANH' , ( ) => {
638638 expect ( parser . parse ( 'TANH()' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
639639 expect ( parser . parse ( 'TANH("value")' ) ) . to . deep . equal ( { error : '#VALUE?' , result : null } ) ;
640- expect ( parser . parse ( 'TANH(1)' ) ) . to . deep . equal ( { error : null , result : 0.761594155955765 } ) ;
640+ expect ( parser . parse ( 'TANH(1)' ) ) . to . almost . eql ( { error : null , result : 0.761594155955765 } , 1e-9 ) ;
641641 } ) ;
642642
643643 it ( 'TRUNC' , ( ) => {
0 commit comments