Skip to content

Commit d052423

Browse files
committed
WIP #1009 prepare calling decision tree rules
1 parent 3ea8ecc commit d052423

22 files changed

+302
-56
lines changed

symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/builtin/Arithmetic.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
import org.matheclipse.core.eval.interfaces.AbstractTrigArg1;
7777
import org.matheclipse.core.eval.interfaces.IFunctionEvaluator;
7878
import org.matheclipse.core.eval.interfaces.IFunctionExpand;
79+
import org.matheclipse.core.eval.interfaces.IMatch;
7980
import org.matheclipse.core.eval.interfaces.INumeric;
8081
import org.matheclipse.core.eval.interfaces.IRewrite;
8182
import org.matheclipse.core.eval.interfaces.ISetEvaluator;
@@ -1555,7 +1556,18 @@ public void setUp(final ISymbol newSymbol) {
15551556
* 1.1018024908797128
15561557
* </pre>
15571558
*/
1558-
private static final class Gamma extends AbstractFunctionEvaluator {
1559+
private static final class Gamma extends AbstractFunctionEvaluator implements IMatch {
1560+
@Override
1561+
public IExpr match3(IAST ast, EvalEngine engine) {
1562+
return F.NIL;
1563+
// return GammaRules.match3(ast, engine);
1564+
}
1565+
1566+
@Override
1567+
public IExpr match4(IAST ast, EvalEngine engine) {
1568+
return F.NIL;
1569+
// return GammaRules.match4(ast, engine);
1570+
}
15591571

15601572
// @Override
15611573
// public IExpr e1ApcomplexArg(Apcomplex arg1) {

symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/builtin/BesselFunctions.java

+37-6
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.matheclipse.core.eval.exception.ValidateException;
2020
import org.matheclipse.core.eval.interfaces.AbstractFunctionEvaluator;
2121
import org.matheclipse.core.eval.interfaces.IFunctionExpand;
22+
import org.matheclipse.core.eval.interfaces.IMatch;
2223
import org.matheclipse.core.expression.F;
2324
import org.matheclipse.core.expression.ImplementationStatus;
2425
import org.matheclipse.core.expression.S;
@@ -410,7 +411,12 @@ public void setUp(final ISymbol newSymbol) {
410411
* </code>
411412
* </pre>
412413
*/
413-
private static final class BesselJ extends AbstractFunctionEvaluator {
414+
private static final class BesselJ extends AbstractFunctionEvaluator implements IMatch {
415+
@Override
416+
public IExpr match3(IAST ast, EvalEngine engine) {
417+
return F.NIL;
418+
// return BesselJRules.match3(ast, engine);
419+
}
414420

415421
/**
416422
* Precondition <code> n - 1/2 </code> is an integer number.
@@ -650,7 +656,12 @@ public void setUp(final ISymbol newSymbol) {
650656
* </code>
651657
* </pre>
652658
*/
653-
private static final class BesselI extends AbstractFunctionEvaluator {
659+
private static final class BesselI extends AbstractFunctionEvaluator implements IMatch {
660+
@Override
661+
public IExpr match3(IAST ast, EvalEngine engine) {
662+
return F.NIL;
663+
// return BesselIRules.match3(ast, engine);
664+
}
654665

655666

656667
@Override
@@ -760,7 +771,12 @@ public void setUp(final ISymbol newSymbol) {
760771
* </code>
761772
* </pre>
762773
*/
763-
private static final class BesselK extends AbstractFunctionEvaluator {
774+
private static final class BesselK extends AbstractFunctionEvaluator implements IMatch {
775+
@Override
776+
public IExpr match3(IAST ast, EvalEngine engine) {
777+
return F.NIL;
778+
// return BesselKRules.match3(ast, engine);
779+
}
764780

765781

766782
@Override
@@ -864,7 +880,12 @@ public void setUp(final ISymbol newSymbol) {
864880
* </code>
865881
* </pre>
866882
*/
867-
private static final class BesselY extends AbstractFunctionEvaluator {
883+
private static final class BesselY extends AbstractFunctionEvaluator implements IMatch {
884+
@Override
885+
public IExpr match3(IAST ast, EvalEngine engine) {
886+
return F.NIL;
887+
// return BesselYRules.match3(ast, engine);
888+
}
868889

869890

870891
@Override
@@ -1127,7 +1148,12 @@ public void setUp(final ISymbol newSymbol) {
11271148
* </pre>
11281149
*/
11291150
private static final class SphericalBesselJ extends AbstractFunctionEvaluator
1130-
implements IFunctionExpand {
1151+
implements IFunctionExpand, IMatch {
1152+
@Override
1153+
public IExpr match3(IAST ast, EvalEngine engine) {
1154+
return F.NIL;
1155+
// return SphericalBesselJRules.match3(ast, engine);
1156+
}
11311157

11321158
@Override
11331159
public IExpr functionExpand(final IAST ast, EvalEngine engine) {
@@ -1390,7 +1416,12 @@ public void setUp(final ISymbol newSymbol) {
13901416
* <h3>Examples</h3>
13911417
*/
13921418
private static final class SphericalBesselY extends AbstractFunctionEvaluator
1393-
implements IFunctionExpand {
1419+
implements IFunctionExpand, IMatch {
1420+
@Override
1421+
public IExpr match3(IAST ast, EvalEngine engine) {
1422+
return F.NIL;
1423+
// return SphericalBesselYRules.match3(ast, engine);
1424+
}
13941425

13951426
@Override
13961427
public IExpr functionExpand(final IAST ast, EvalEngine engine) {

symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/builtin/ExpTrigsFunctions.java

+20-2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.matheclipse.core.eval.interfaces.AbstractEvaluator;
4949
import org.matheclipse.core.eval.interfaces.AbstractFunctionEvaluator;
5050
import org.matheclipse.core.eval.interfaces.AbstractTrigArg1;
51+
import org.matheclipse.core.eval.interfaces.IMatch;
5152
import org.matheclipse.core.eval.interfaces.INumeric;
5253
import org.matheclipse.core.eval.interfaces.IReciprocalTrigonometricFunction;
5354
import org.matheclipse.core.eval.interfaces.IRewrite;
@@ -903,7 +904,14 @@ public IExpr evalAsLeadingTerm(IAST ast, ISymbol x, IExpr logx, int cdir) {
903904
* See <a href="http://en.wikipedia.org/wiki/Inverse_trigonometric functions" >
904905
* Inverse_trigonometric functions</a>
905906
*/
906-
private static final class ArcTan extends AbstractArg12 implements INumeric, IRewrite {
907+
private static final class ArcTan extends AbstractArg12 implements INumeric, IRewrite, IMatch
908+
{
909+
910+
@Override
911+
public IExpr match3(IAST ast, EvalEngine engine) {
912+
return F.NIL;
913+
// return ArcTanRules.match3(ast, engine);
914+
}
907915

908916
@Override
909917
public IExpr e1ObjArg(final IExpr arg1) {
@@ -2244,7 +2252,17 @@ public void setUp(ISymbol newSymbol) {
22442252
}
22452253

22462254
/** See <a href="http://en.wikipedia.org/wiki/Logarithm">Wikipedia - Logarithm</a> */
2247-
private static final class Log extends AbstractArg12 implements INumeric, IRewrite {
2255+
private static final class Log extends AbstractArg12 implements INumeric, IRewrite, IMatch {
2256+
@Override
2257+
public IExpr match3(IAST ast, EvalEngine engine) {
2258+
return F.NIL;
2259+
// return LogRules.match3(ast, engine);
2260+
}
2261+
2262+
@Override
2263+
public IExpr evaluate(IAST ast, EvalEngine engine) {
2264+
return super.evaluate(ast, engine);
2265+
}
22482266

22492267
@Override
22502268
public IExpr e1ApfloatArg(Apfloat arg1) {

symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/builtin/HypergeometricFunctions.java

+44-8
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.matheclipse.core.eval.exception.ValidateException;
2222
import org.matheclipse.core.eval.interfaces.AbstractFunctionEvaluator;
2323
import org.matheclipse.core.eval.interfaces.IFunctionExpand;
24+
import org.matheclipse.core.eval.interfaces.IMatch;
2425
import org.matheclipse.core.expression.F;
2526
import org.matheclipse.core.expression.ImplementationStatus;
2627
import org.matheclipse.core.expression.S;
@@ -887,7 +888,12 @@ public void setUp(final ISymbol newSymbol) {
887888
}
888889
}
889890

890-
private static class Hypergeometric1F1 extends AbstractFunctionEvaluator {
891+
private static class Hypergeometric1F1 extends AbstractFunctionEvaluator implements IMatch {
892+
@Override
893+
public IExpr match4(IAST ast, EvalEngine engine) {
894+
return F.NIL;
895+
// return Hypergeometric1F1Rules.match4(ast, engine);
896+
}
891897

892898
@Override
893899
public IExpr evaluate(IAST ast, EvalEngine engine) {
@@ -1077,7 +1083,12 @@ public void setUp(final ISymbol newSymbol) {
10771083
}
10781084
}
10791085

1080-
private static class Hypergeometric2F1 extends AbstractFunctionEvaluator {
1086+
private static class Hypergeometric2F1 extends AbstractFunctionEvaluator implements IMatch {
1087+
@Override
1088+
public IExpr match5(IAST ast, EvalEngine engine) {
1089+
return F.NIL;
1090+
// return Hypergeometric2F1Rules.match5(ast, engine);
1091+
}
10811092

10821093
@Override
10831094
public IExpr evaluate(IAST ast, EvalEngine engine) {
@@ -1243,7 +1254,13 @@ public void setUp(final ISymbol newSymbol) {
12431254
}
12441255
}
12451256

1246-
private static class Hypergeometric2F1Regularized extends AbstractFunctionEvaluator {
1257+
private static class Hypergeometric2F1Regularized extends AbstractFunctionEvaluator
1258+
implements IMatch {
1259+
@Override
1260+
public IExpr match5(IAST ast, EvalEngine engine) {
1261+
return F.NIL;
1262+
// return Hypergeometric2F1RegularizedRules.match5(ast, engine);
1263+
}
12471264

12481265
@Override
12491266
public IExpr evaluate(IAST ast, EvalEngine engine) {
@@ -1319,7 +1336,12 @@ public void setUp(final ISymbol newSymbol) {
13191336
}
13201337
}
13211338

1322-
private static class HypergeometricPFQ extends AbstractFunctionEvaluator {
1339+
private static class HypergeometricPFQ extends AbstractFunctionEvaluator implements IMatch {
1340+
@Override
1341+
public IExpr match4(IAST ast, EvalEngine engine) {
1342+
return F.NIL;
1343+
// return HypergeometricPFQRules.match4(ast, engine);
1344+
}
13231345

13241346
@Override
13251347
public IExpr evaluate(IAST ast, EvalEngine engine) {
@@ -1422,7 +1444,12 @@ public void setUp(final ISymbol newSymbol) {
14221444
}
14231445
}
14241446

1425-
private static class HypergeometricU extends AbstractFunctionEvaluator {
1447+
private static class HypergeometricU extends AbstractFunctionEvaluator implements IMatch {
1448+
@Override
1449+
public IExpr match4(IAST ast, EvalEngine engine) {
1450+
return F.NIL;
1451+
// return HypergeometricURules.match4(ast, engine);
1452+
}
14261453

14271454
@Override
14281455
public IExpr evaluate(IAST ast, EvalEngine engine) {
@@ -1769,8 +1796,12 @@ public void setUp(final ISymbol newSymbol) {
17691796
}
17701797
}
17711798

1772-
private static class WhittakerM extends AbstractFunctionEvaluator {
1773-
1799+
private static class WhittakerM extends AbstractFunctionEvaluator implements IMatch {
1800+
@Override
1801+
public IExpr match4(IAST ast, EvalEngine engine) {
1802+
return F.NIL;
1803+
// return WhittakerMRules.match4(ast, engine);
1804+
}
17741805

17751806
@Override
17761807
public IExpr evaluate(IAST ast, EvalEngine engine) {
@@ -1834,7 +1865,12 @@ public void setUp(final ISymbol newSymbol) {
18341865
}
18351866
}
18361867

1837-
private static class WhittakerW extends AbstractFunctionEvaluator {
1868+
private static class WhittakerW extends AbstractFunctionEvaluator implements IMatch {
1869+
@Override
1870+
public IExpr match4(IAST ast, EvalEngine engine) {
1871+
return F.NIL;
1872+
// return WhittakerWRules.match4(ast, engine);
1873+
}
18381874

18391875
@Override
18401876
public IExpr evaluate(IAST ast, EvalEngine engine) {

symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/builtin/PolynomialFunctions.java

+28-5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.matheclipse.core.eval.exception.Validate;
2525
import org.matheclipse.core.eval.interfaces.AbstractFunctionEvaluator;
2626
import org.matheclipse.core.eval.interfaces.IFunctionExpand;
27+
import org.matheclipse.core.eval.interfaces.IMatch;
2728
import org.matheclipse.core.eval.util.OptionArgs;
2829
import org.matheclipse.core.expression.F;
2930
import org.matheclipse.core.expression.ImplementationStatus;
@@ -1145,10 +1146,17 @@ public void setUp(final ISymbol newSymbol) {
11451146

11461147

11471148

1148-
private static final class SphericalHarmonicY extends AbstractFunctionEvaluator {
1149+
private static final class SphericalHarmonicY extends AbstractFunctionEvaluator
1150+
implements IMatch {
1151+
@Override
1152+
public IExpr match5(IAST ast, EvalEngine engine) {
1153+
return F.NIL;
1154+
// return SphericalHarmonicYRules.match5(ast, engine);
1155+
}
11491156

11501157
@Override
11511158
public IExpr evaluate(final IAST ast, EvalEngine engine) {
1159+
11521160
IExpr l = ast.arg1();
11531161
IExpr m = ast.arg2();
11541162
IExpr t = ast.arg3();
@@ -1798,11 +1806,16 @@ public void setUp(final ISymbol newSymbol) {
17981806
}
17991807
}
18001808

1801-
private static final class JacobiP extends AbstractFunctionEvaluator {
1809+
private static final class JacobiP extends AbstractFunctionEvaluator implements IMatch {
1810+
@Override
1811+
public IExpr match5(IAST ast, EvalEngine engine) {
1812+
return F.NIL;
1813+
// return JacobiPRules.match5(ast, engine);
1814+
}
18021815

18031816
@Override
18041817
public IExpr evaluate(final IAST ast, EvalEngine engine) {
1805-
1818+
// }
18061819
IExpr n = ast.arg1();
18071820
IExpr a = ast.arg2();
18081821
IExpr b = ast.arg3();
@@ -2105,7 +2118,12 @@ public void setUp(final ISymbol newSymbol) {
21052118
* 3/8-15/4*x^2+35/8*x^4
21062119
* </pre>
21072120
*/
2108-
private static final class LegendreP extends AbstractFunctionEvaluator {
2121+
private static final class LegendreP extends AbstractFunctionEvaluator implements IMatch {
2122+
@Override
2123+
public IExpr match3(IAST ast, EvalEngine engine) {
2124+
return F.NIL;
2125+
// return LegendrePRules.match3(ast, engine);
2126+
}
21092127

21102128
@Override
21112129
public IExpr evaluate(final IAST ast, EvalEngine engine) {
@@ -2188,7 +2206,12 @@ public void setUp(final ISymbol newSymbol) {
21882206
* 55/24*z-35/8*z^3-3/16*Log(1-z)+15/8*z^2*Log(1-z)-35/16*z^4*Log(1-z)+3/16*Log(1+z)-15/8*z^2*Log(1+z)+35/16*z^4*Log(1+z)
21892207
* </pre>
21902208
*/
2191-
static final class LegendreQ extends AbstractFunctionEvaluator {
2209+
static final class LegendreQ extends AbstractFunctionEvaluator implements IMatch {
2210+
@Override
2211+
public IExpr match3(IAST ast, EvalEngine engine) {
2212+
return F.NIL;
2213+
// return LegendreQRules.match3(ast, engine);
2214+
}
21922215

21932216
@Override
21942217
public IExpr evaluate(final IAST ast, EvalEngine engine) {

0 commit comments

Comments
 (0)