1
1
package jscl .math ;
2
2
3
+ import jscl .AngleUnit ;
4
+ import jscl .JsclMathEngine ;
5
+ import jscl .MathEngine ;
6
+ import jscl .NumeralBase ;
7
+ import jscl .math .function .Constant ;
8
+ import jscl .math .function .ExtendedConstant ;
9
+ import jscl .math .function .IConstant ;
10
+ import jscl .text .ParseException ;
11
+ import midpcalc .Real ;
3
12
import org .junit .Test ;
4
13
import org .solovyev .common .NumberFormatter ;
5
14
15
+ import javax .annotation .Nonnull ;
16
+ import javax .annotation .Nullable ;
6
17
import java .io .BufferedReader ;
7
18
import java .io .IOException ;
8
19
import java .io .InputStreamReader ;
11
22
import java .net .URLConnection ;
12
23
import java .util .Set ;
13
24
14
- import javax .annotation .Nonnull ;
15
- import javax .annotation .Nullable ;
16
-
17
- import jscl .AngleUnit ;
18
- import jscl .JsclMathEngine ;
19
- import jscl .MathEngine ;
20
- import jscl .NumeralBase ;
21
- import jscl .math .function .Constant ;
22
- import jscl .math .function .ExtendedConstant ;
23
- import jscl .math .function .IConstant ;
24
- import jscl .text .ParseException ;
25
- import midpcalc .Real ;
26
-
27
- import static org .junit .Assert .assertEquals ;
28
- import static org .junit .Assert .assertTrue ;
29
- import static org .junit .Assert .fail ;
25
+ import static org .junit .Assert .*;
30
26
31
27
public class ExpressionTest {
32
28
@@ -145,7 +141,7 @@ public void testConstants() throws Exception {
145
141
@ Test
146
142
public void testExpressions () throws Exception {
147
143
assertEquals ("3" , Expression .valueOf ("3" ).numeric ().toString ());
148
- assertEquals ("0.6931471805599453 " , Expression .valueOf ("ln(2)" ).numeric ().toString ());
144
+ assertEquals ("0.693147180559945 " , Expression .valueOf ("ln(2)" ).numeric ().toString ());
149
145
assertEquals ("1" , Expression .valueOf ("lg(10)" ).numeric ().toString ());
150
146
assertEquals ("0" , Expression .valueOf ("eq(0, 1)" ).numeric ().toString ());
151
147
assertEquals ("1" , Expression .valueOf ("eq(1, 1)" ).numeric ().toString ());
@@ -168,7 +164,7 @@ public void testExpressions() throws Exception {
168
164
final AngleUnit angleUnits = me .getAngleUnits ();
169
165
try {
170
166
me .setAngleUnits (AngleUnit .rad );
171
- assertEquals ("-0.9055783620066238 " , Expression .valueOf ("sin(4!)" ).numeric ().toString ());
167
+ assertEquals ("-0.905578362006624 " , Expression .valueOf ("sin(4!)" ).numeric ().toString ());
172
168
} finally {
173
169
me .setAngleUnits (angleUnits );
174
170
}
@@ -180,7 +176,7 @@ public void testExpressions() throws Exception {
180
176
} catch (NotIntegerException e ) {
181
177
182
178
}
183
- assertEquals ("0.5235987755982988 " , Expression .valueOf ("3.141592653589793/3!" ).numeric ().toString ());
179
+ assertEquals ("0.523598775598299 " , Expression .valueOf ("3.141592653589793/3!" ).numeric ().toString ());
184
180
try {
185
181
assertEquals ("3.141592653589793/3.141592653589793!" , Expression .valueOf ("3.141592653589793/3.141592653589793!" ).numeric ().toString ());
186
182
fail ();
@@ -212,14 +208,14 @@ public void testExpressions() throws Exception {
212
208
final AngleUnit defaultAngleUnits = me .getAngleUnits ();
213
209
try {
214
210
me .setAngleUnits (AngleUnit .rad );
215
- assertEquals ("0.0174532925199433 " , Expression .valueOf ("1°" ).numeric ().toString ());
216
- assertEquals ("0.0349065850398866 " , Expression .valueOf ("2°" ).numeric ().toString ());
217
- assertEquals ("0.0523598775598299 " , Expression .valueOf ("3°" ).numeric ().toString ());
218
- assertEquals ("0.2617993877991495 " , Expression .valueOf ("3°*5" ).numeric ().toString ());
219
- assertEquals ("0.0027415567780804 " , Expression .valueOf ("3°^2" ).numeric ().toString ());
220
- assertEquals ("0.0109662271123215 " , Expression .valueOf ("3!°^2" ).numeric ().toString ());
221
- assertEquals ("0.0009138522593601 " , Expression .valueOf ("3°°" ).numeric ().toString ());
222
- assertEquals ("0.0872664625997165 " , Expression .valueOf ("5°" ).numeric ().toString ());
211
+ assertEquals ("0.017453292519943 " , Expression .valueOf ("1°" ).numeric ().toString ());
212
+ assertEquals ("0.034906585039887 " , Expression .valueOf ("2°" ).numeric ().toString ());
213
+ assertEquals ("0.05235987755983 " , Expression .valueOf ("3°" ).numeric ().toString ());
214
+ assertEquals ("0.261799387799149 " , Expression .valueOf ("3°*5" ).numeric ().toString ());
215
+ assertEquals ("0.00274155677808 " , Expression .valueOf ("3°^2" ).numeric ().toString ());
216
+ assertEquals ("0.010966227112322 " , Expression .valueOf ("3!°^2" ).numeric ().toString ());
217
+ assertEquals ("0.00091385225936 " , Expression .valueOf ("3°°" ).numeric ().toString ());
218
+ assertEquals ("0.087266462599716 " , Expression .valueOf ("5°" ).numeric ().toString ());
223
219
assertEquals ("2.05235987755983" , Expression .valueOf ("2+3°" ).numeric ().toString ());
224
220
} finally {
225
221
me .setAngleUnits (defaultAngleUnits );
@@ -377,7 +373,7 @@ public void testExpressions() throws Exception {
377
373
378
374
try {
379
375
me .setAngleUnits (AngleUnit .rad );
380
- assertEquals ("0.6931471805599453 +Π*i" , Expression .valueOf ("ln(-2)" ).numeric ().toString ());
376
+ assertEquals ("0.693147180559945 +Π*i" , Expression .valueOf ("ln(-2)" ).numeric ().toString ());
381
377
} finally {
382
378
me .setAngleUnits (AngleUnit .deg );
383
379
}
@@ -387,7 +383,7 @@ public void testExpressions() throws Exception {
387
383
assertEquals ("sin(n!)" , Expression .valueOf ("sin(n!)" ).expand ().toString ());
388
384
assertEquals ("sin(n°)" , Expression .valueOf ("sin(n°)" ).expand ().toString ());
389
385
assertEquals ("sin(30°)" , Expression .valueOf ("sin(30°)" ).expand ().toString ());
390
- assertEquals ("0.4999999999999999 " , Expression .valueOf ("sin(30°)" ).expand ().numeric ().toString ());
386
+ assertEquals ("0.5 " , Expression .valueOf ("sin(30°)" ).expand ().numeric ().toString ());
391
387
assertEquals ("sin(2!)" , Expression .valueOf ("sin(2!)" ).expand ().toString ());
392
388
393
389
assertEquals ("12" , Expression .valueOf ("3*(3+1)" ).expand ().toString ());
@@ -408,7 +404,7 @@ public void testExpressions() throws Exception {
408
404
} catch (ParseException e ) {
409
405
}
410
406
411
- assertEquals ("0.4999999999999999 " , Expression .valueOf ("sin(30°)" ).numeric ().toString ());
407
+ assertEquals ("0.5 " , Expression .valueOf ("sin(30°)" ).numeric ().toString ());
412
408
assertEquals ("π" , Expression .valueOf ("√(π)^2" ).simplify ().toString ());
413
409
assertEquals ("π" , Expression .valueOf ("√(π^2)" ).simplify ().toString ());
414
410
assertEquals ("π^2" , Expression .valueOf ("√(π^2*π^2)" ).simplify ().toString ());
@@ -420,7 +416,7 @@ public void testExpressions() throws Exception {
420
416
// in deg mode π=180 and factorial of 180 is calculating
421
417
assertEquals ("0" , Expression .valueOf ("Π/Π!" ).numeric ().toString ());
422
418
423
- assertEquals ("0.0000000000000001 *i" , Expression .valueOf ("exp((Π*i))+1" ).numeric ().toString ());
419
+ assertEquals ("0*i" , Expression .valueOf ("exp((Π*i))+1" ).numeric ().toString ());
424
420
assertEquals ("20*x^3" , Expression .valueOf ("∂(5*x^4, x)" ).expand ().simplify ().toString ());
425
421
assertEquals ("25*x" , Expression .valueOf ("5*x*5" ).expand ().simplify ().toString ());
426
422
assertEquals ("20*x" , Expression .valueOf ("5*x*4" ).expand ().simplify ().toString ());
@@ -442,10 +438,10 @@ public void testExpressions() throws Exception {
442
438
try {
443
439
me .setNumeralBase (NumeralBase .hex );
444
440
445
- assertEquals ("0.EEEEEEEEEEEEEC88 " , me .evaluate ("0x:E/0x:F" ));
441
+ assertEquals ("0.EEEEEEEEEEEEEC9 " , me .evaluate ("0x:E/0x:F" ));
446
442
assertEquals ("E/F" , me .simplify ("0x:E/0x:F" ));
447
443
448
- assertEquals ("0.EEEEEEEEEEEEEC88 " , me .evaluate ("E/F" ));
444
+ assertEquals ("0.EEEEEEEEEEEEEC9 " , me .evaluate ("E/F" ));
449
445
assertEquals ("E/F" , me .simplify ("E/F" ));
450
446
451
447
} finally {
@@ -472,9 +468,9 @@ public void testExpressions() throws Exception {
472
468
473
469
assertEquals ("-1.471127674303735" , me .evaluate ("atan(-10)" ));
474
470
assertEquals ("-1.10714871779409" , me .evaluate ("atan(-2)" ));
475
- assertEquals ("-0.7853981633974483 " , me .evaluate ("atan(-1)" ));
471
+ assertEquals ("-0.785398163397448 " , me .evaluate ("atan(-1)" ));
476
472
assertEquals ("0" , me .evaluate ("atan(0)" ));
477
- assertEquals ("0.7853981633974483 " , me .evaluate ("atan(1)" ));
473
+ assertEquals ("0.785398163397448 " , me .evaluate ("atan(1)" ));
478
474
assertEquals ("1.10714871779409" , me .evaluate ("atan(2)" ));
479
475
assertEquals ("1.471127674303735" , me .evaluate ("atan(10)" ));
480
476
@@ -487,9 +483,9 @@ public void testExpressions() throws Exception {
487
483
assertEquals ("1.570796326794897" , me .evaluate ("acot(0)" ));
488
484
assertEquals ("2.677945044588987" , me .evaluate ("acot(-2)" ));
489
485
assertEquals ("2.356194490192345" , me .evaluate ("acot(-1)" ));
490
- assertEquals ("0.7853981633974483 " , me .evaluate ("acot(1)" ));
491
- assertEquals ("0.4636476090008062 " , me .evaluate ("acot(2)" ));
492
- assertEquals ("0.0996686524911619 " , me .evaluate ("acot(10)" ));
486
+ assertEquals ("0.785398163397448 " , me .evaluate ("acot(1)" ));
487
+ assertEquals ("0.463647609000806 " , me .evaluate ("acot(2)" ));
488
+ assertEquals ("0.099668652491162 " , me .evaluate ("acot(10)" ));
493
489
494
490
assertEquals ("Π" , me .evaluate ("π" ));
495
491
assertEquals ("Π" , me .evaluate ("3.14159265358979323846" ));
@@ -638,25 +634,25 @@ public void testAngleUnits() throws Exception {
638
634
try {
639
635
mathEngine .setAngleUnits (AngleUnit .rad );
640
636
testSinEqualsToSinh (mathEngine , 0d );
641
- testSinEqualsToSinh (mathEngine , 1d , "0.8414709848078965 " );
642
- testSinEqualsToSinh (mathEngine , 3d , "0.1411200080598672 " );
637
+ testSinEqualsToSinh (mathEngine , 1d , "0.841470984807897 " );
638
+ testSinEqualsToSinh (mathEngine , 3d , "0.141120008059867 " );
643
639
testSinEqualsToSinh (mathEngine , 6d );
644
- testSinEqualsToSinh (mathEngine , -1d , "-0.8414709848078965 " );
645
- testSinEqualsToSinh (mathEngine , -3.3d , "0.1577456941432482 " );
646
- testSinEqualsToSinh (mathEngine , -232.2d , "0.2742948637368958 " );
640
+ testSinEqualsToSinh (mathEngine , -1d , "-0.841470984807897 " );
641
+ testSinEqualsToSinh (mathEngine , -3.3d , "0.157745694143248 " );
642
+ testSinEqualsToSinh (mathEngine , -232.2d , "0.274294863736896 " );
647
643
} finally {
648
644
mathEngine .setAngleUnits (defaultAngleUnits );
649
645
}
650
646
651
647
try {
652
648
mathEngine .setAngleUnits (AngleUnit .deg );
653
649
testSinEqualsToSinh (mathEngine , 0d );
654
- testSinEqualsToSinh (mathEngine , 1d , "0.0174524064372835 " );
655
- testSinEqualsToSinh (mathEngine , 3d , "0.0523359562429438 " );
656
- testSinEqualsToSinh (mathEngine , 6d , "0.1045284632676535 " );
657
- testSinEqualsToSinh (mathEngine , -1d , "-0.0174524064372835 " );
658
- testSinEqualsToSinh (mathEngine , -3.3d , "-0.0575640269595673 " );
659
- testSinEqualsToSinh (mathEngine , -232.2d , "0.7901550123756904 " );
650
+ testSinEqualsToSinh (mathEngine , 1d , "0.017452406437284 " );
651
+ testSinEqualsToSinh (mathEngine , 3d , "0.052335956242944 " );
652
+ testSinEqualsToSinh (mathEngine , 6d , "0.104528463267653 " );
653
+ testSinEqualsToSinh (mathEngine , -1d , "-0.017452406437284 " );
654
+ testSinEqualsToSinh (mathEngine , -3.3d , "-0.057564026959567 " );
655
+ testSinEqualsToSinh (mathEngine , -232.2d , "0.79015501237569 " );
660
656
assertEquals ("Π/2" , mathEngine .simplify ("Π/2" ));
661
657
} finally {
662
658
mathEngine .setAngleUnits (defaultAngleUnits );
@@ -732,7 +728,7 @@ public void testDerivations() throws Exception {
732
728
final AngleUnit defaultAngleUnits = JsclMathEngine .getInstance ().getAngleUnits ();
733
729
try {
734
730
JsclMathEngine .getInstance ().setAngleUnits (AngleUnit .rad );
735
- assertEquals ("-0.9092974268256817 " , Expression .valueOf ("∂(cos(t),t,2)" ).numeric ().toString ());
731
+ assertEquals ("-0.909297426825682 " , Expression .valueOf ("∂(cos(t),t,2)" ).numeric ().toString ());
736
732
assertEquals ("∂(cos(t), t, 2, 1)" , Expression .valueOf ("∂(cos(t),t,2)" ).simplify ().toString ());
737
733
assertEquals ("-2.234741690198506" , Expression .valueOf ("∂(t*cos(t),t,2)" ).numeric ().toString ());
738
734
assertEquals ("-4.469483380397012" , Expression .valueOf ("2*∂(t*cos(t),t,2)" ).numeric ().toString ());
@@ -760,7 +756,7 @@ public void testSum() throws Exception {
760
756
assertEquals (Expression .valueOf ("3" ).numeric ().toString (), Expression .valueOf ("Σ(n°,n,1,2)" ).expand ().numeric ().toString ());
761
757
assertEquals ("200" , Expression .valueOf ("Σ(n°/n°,n,1,200)" ).expand ().numeric ().toString ());
762
758
assertEquals ("-sin(1)-sin(2)" , Expression .valueOf ("Σ(∂(cos(t),t,n),n,1,2)" ).expand ().toString ());
763
- assertEquals ("-0.0523519031397845 " , Expression .valueOf ("Σ(∂(cos(t),t,n),n,1,2)" ).expand ().numeric ().toString ());
759
+ assertEquals ("-0.052351903139784 " , Expression .valueOf ("Σ(∂(cos(t),t,n),n,1,2)" ).expand ().numeric ().toString ());
764
760
}
765
761
766
762
@ Test
@@ -819,10 +815,10 @@ public void testFormat() throws Exception {
819
815
assertEquals ("1.222E-6" , Expression .valueOf ("1222/(10^9)" ).numeric ().toString ());
820
816
821
817
me .setNotation (Real .NumberFormat .FSE_NONE );
822
- assertEquals ("0.3333333333333333 " , Expression .valueOf ("1/3" ).numeric ().toString ());
818
+ assertEquals ("0.333333333333333 " , Expression .valueOf ("1/3" ).numeric ().toString ());
823
819
824
820
me .setNotation (Real .NumberFormat .FSE_SCI );
825
- assertEquals ("0.3333333333333333 " , Expression .valueOf ("1/3" ).numeric ().toString ());
821
+ assertEquals ("0.333333333333333 " , Expression .valueOf ("1/3" ).numeric ().toString ());
826
822
827
823
me .setPrecision (10 );
828
824
assertEquals ("0.3333333333" , Expression .valueOf ("1/3" ).numeric ().toString ());
0 commit comments