Converted more rules
This commit is contained in:
parent
62277c7b4f
commit
ef1430a9e4
@ -1,44 +0,0 @@
|
||||
package org.warp.picalculator.math.rules;
|
||||
|
||||
import org.warp.picalculator.Error;
|
||||
import org.warp.picalculator.math.Function;
|
||||
import org.warp.picalculator.math.MathContext;
|
||||
import org.warp.picalculator.math.functions.Division;
|
||||
import org.warp.picalculator.math.functions.Number;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
|
||||
/**
|
||||
* Fractions rule<br>
|
||||
* <b>0 / a = 0</b>
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
public class FractionsRule1 {
|
||||
|
||||
public static boolean compare(Function f) {
|
||||
final MathContext root = f.getMathContext();
|
||||
final Division fnc = (Division) f;
|
||||
if (fnc.getParameter1() instanceof Number) {
|
||||
final Number numb1 = (Number) fnc.getParameter1();
|
||||
if (numb1.equals(new Number(root, 0))) {
|
||||
if (fnc.getParameter2() instanceof Number) {
|
||||
final Number numb2 = (Number) fnc.getParameter2();
|
||||
if (numb2.equals(new Number(root, 0))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ObjectArrayList<Function> execute(Function f) throws Error {
|
||||
final ObjectArrayList<Function> result = new ObjectArrayList<>();
|
||||
result.add(new Number(f.getMathContext(), 0));
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package org.warp.picalculator.math.rules;
|
||||
|
||||
import org.warp.picalculator.Error;
|
||||
import org.warp.picalculator.math.Function;
|
||||
import org.warp.picalculator.math.functions.Division;
|
||||
import org.warp.picalculator.math.functions.Expression;
|
||||
import org.warp.picalculator.math.functions.Multiplication;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
|
||||
/**
|
||||
* Fractions rule<br>
|
||||
* <b>a / (b / c) = (a * c) / b</b>
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
public class FractionsRule11 {
|
||||
|
||||
public static boolean compare(Function f) throws InterruptedException {
|
||||
final Division fnc = (Division) f;
|
||||
Function a;
|
||||
Function c;
|
||||
Division div2;
|
||||
if (fnc.getParameter2() instanceof Division) {
|
||||
div2 = (Division) fnc.getParameter2();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
a = fnc.getParameter1();
|
||||
c = div2.getParameter2();
|
||||
return new Multiplication(fnc.getMathContext(), a, c).simplify(this) != null;
|
||||
}
|
||||
|
||||
public static ObjectArrayList<Function> execute(Function f) throws Error {
|
||||
final ObjectArrayList<Function> result = new ObjectArrayList<>();
|
||||
final Division fnc = (Division) f;
|
||||
Function a;
|
||||
Function b;
|
||||
Function c;
|
||||
|
||||
final Division div2 = (Division) fnc.getParameter2();
|
||||
|
||||
a = fnc.getParameter1();
|
||||
b = div2.getParameter1();
|
||||
c = div2.getParameter2();
|
||||
result.add(new Division(fnc.getMathContext(), new Multiplication(fnc.getMathContext(), new Expression(fnc.getMathContext(), a), new Expression(fnc.getMathContext(), c)), b));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
package org.warp.picalculator.math.rules;
|
||||
|
||||
import org.warp.picalculator.Error;
|
||||
import org.warp.picalculator.math.Function;
|
||||
import org.warp.picalculator.math.functions.Division;
|
||||
import org.warp.picalculator.math.functions.Number;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
|
||||
/**
|
||||
* Fractions rule<br>
|
||||
* <b>a / 1 = a</b>
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
public class FractionsRule2 {
|
||||
|
||||
public static boolean compare(Function f) {
|
||||
final Division fnc = (Division) f;
|
||||
if (fnc.getParameter2() instanceof Number) {
|
||||
final Number numb = (Number) fnc.getParameter2();
|
||||
if (numb.equals(new Number(f.getMathContext(), 1))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ObjectArrayList<Function> execute(Function f) throws Error {
|
||||
final ObjectArrayList<Function> result = new ObjectArrayList<>();
|
||||
final Division fnc = (Division) f;
|
||||
result.add(fnc.getParameter1());
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package org.warp.picalculator.math.rules;
|
||||
|
||||
import org.warp.picalculator.Error;
|
||||
import org.warp.picalculator.math.Function;
|
||||
import org.warp.picalculator.math.functions.Division;
|
||||
import org.warp.picalculator.math.functions.Number;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
|
||||
/**
|
||||
* Fractions rule<br>
|
||||
* <b>a / a = 1</b>
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
public class FractionsRule3 {
|
||||
|
||||
public static boolean compare(Function f) {
|
||||
final Division fnc = (Division) f;
|
||||
if (fnc.getParameter1().equals(fnc.getParameter2())) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ObjectArrayList<Function> execute(Function f) throws Error {
|
||||
final ObjectArrayList<Function> result = new ObjectArrayList<>();
|
||||
result.add(new Number(f.getMathContext(), 1));
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
package org.warp.picalculator.math.rules;
|
||||
|
||||
import org.warp.picalculator.Error;
|
||||
import org.warp.picalculator.math.Function;
|
||||
import org.warp.picalculator.math.functions.Division;
|
||||
import org.warp.picalculator.math.functions.Number;
|
||||
import org.warp.picalculator.math.functions.Power;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
|
||||
/**
|
||||
* Fractions rule<br>
|
||||
* <b>(a / b) ^ -1 = b / a</b>
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
public class FractionsRule4 {
|
||||
|
||||
public static boolean compare(Function f) {
|
||||
final Power fnc = (Power) f;
|
||||
if (fnc.getParameter1() instanceof Division && fnc.getParameter2() instanceof Number) {
|
||||
final Number n2 = (Number) fnc.getParameter2();
|
||||
if (n2.equals(new Number(f.getMathContext(), -1))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ObjectArrayList<Function> execute(Function f) throws Error {
|
||||
final ObjectArrayList<Function> result = new ObjectArrayList<>();
|
||||
final Power fnc = (Power) f;
|
||||
final Function a = ((Division) fnc.getParameter1()).getParameter1();
|
||||
final Function b = ((Division) fnc.getParameter1()).getParameter2();
|
||||
final Division res = new Division(f.getMathContext(), b, a);
|
||||
result.add(res);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
package org.warp.picalculator.math.rules;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import org.warp.picalculator.Error;
|
||||
import org.warp.picalculator.math.Function;
|
||||
import org.warp.picalculator.math.MathContext;
|
||||
import org.warp.picalculator.math.functions.Division;
|
||||
import org.warp.picalculator.math.functions.Number;
|
||||
import org.warp.picalculator.math.functions.Power;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
|
||||
/**
|
||||
* Fractions rule<br>
|
||||
* <b>(a / b) ^ -c = (b / a) ^ c</b>
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
public class FractionsRule5 {
|
||||
|
||||
public static boolean compare(Function f) {
|
||||
final Power fnc = (Power) f;
|
||||
if (fnc.getParameter1() instanceof Division && fnc.getParameter2() instanceof Number) {
|
||||
final Number n2 = (Number) fnc.getParameter2();
|
||||
if (n2.getTerm().compareTo(BigDecimal.ZERO) < 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ObjectArrayList<Function> execute(Function f) throws Error {
|
||||
final MathContext root = f.getMathContext();
|
||||
final ObjectArrayList<Function> result = new ObjectArrayList<>();
|
||||
final Power fnc = (Power) f;
|
||||
final Function a = ((Division) fnc.getParameter1()).getParameter1();
|
||||
final Function b = ((Division) fnc.getParameter1()).getParameter2();
|
||||
final Function c = ((Number) fnc.getParameter2()).multiply(new Number(root, "-1"));
|
||||
final Division dv = new Division(root, b, a);
|
||||
final Power pow = new Power(root, dv, c);
|
||||
result.add(pow);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -22,4 +22,10 @@ ExponentRule4
|
||||
ExponentRule9
|
||||
ExponentRule15
|
||||
ExponentRule16
|
||||
ExponentRule17
|
||||
ExponentRule17
|
||||
FractionsRule1
|
||||
FractionsRule2
|
||||
FractionsRule3
|
||||
FractionsRule4
|
||||
FractionsRule5
|
||||
FractionsRule11
|
||||
|
|
65
src/main/resources/rules/FractionsRule1.js
Normal file
65
src/main/resources/rules/FractionsRule1.js
Normal file
@ -0,0 +1,65 @@
|
||||
//Imports
|
||||
|
||||
|
||||
var Error = org.warp.picalculator.Error;
|
||||
var Function = org.warp.picalculator.math.Function;
|
||||
var MathContext = org.warp.picalculator.math.MathContext;
|
||||
var Division = org.warp.picalculator.math.functions.Division;
|
||||
var Number = org.warp.picalculator.math.functions.Number;
|
||||
|
||||
var ObjectArrayList = Java.type("it.unimi.dsi.fastutil.objects.ObjectArrayList");
|
||||
|
||||
/**
|
||||
* Fractions rule
|
||||
* 0 / a = 0
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
var rule = {
|
||||
// Rule name
|
||||
getRuleName: function() {
|
||||
return "FractionsRule1";
|
||||
},
|
||||
// Rule type
|
||||
getRuleType: function() {
|
||||
return RuleType.CALCULATION;
|
||||
},
|
||||
/* Rule function
|
||||
Returns:
|
||||
- null if it's not executable on the function "f"
|
||||
- An ObjectArrayList<Function> if it did something
|
||||
*/
|
||||
|
||||
execute: function(f) {
|
||||
var isExecutable;
|
||||
var root = f.getMathContext();
|
||||
if (ScriptUtils.instanceOf(f, Division.class)) {
|
||||
var fnc = f;
|
||||
if (ScriptUtils.instanceOf(fnc.getParameter1(), Number.class)) {
|
||||
var numb1 = fnc.getParameter1();
|
||||
if (numb1.equals(new Number(root, 0))) {
|
||||
if (ScriptUtils.instanceOf(fnc.getParameter2(), Number.class)) {
|
||||
var numb2 = fnc.getParameter2();
|
||||
if (numb2.equals(new Number(root, 0)) == false) {
|
||||
isExecutable = true;
|
||||
}
|
||||
} else {
|
||||
isExecutable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isExecutable) {
|
||||
var result = new ObjectArrayList();
|
||||
result.add(new Number(f.getMathContext(), 0));
|
||||
return result;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add this rule to the list of rules
|
||||
RulesManager.addRule(engine.getInterface(rule, Rule.class));
|
71
src/main/resources/rules/FractionsRule11.js
Normal file
71
src/main/resources/rules/FractionsRule11.js
Normal file
@ -0,0 +1,71 @@
|
||||
//Imports
|
||||
|
||||
|
||||
var Error = org.warp.picalculator.Error;
|
||||
var Function = org.warp.picalculator.math.Function;
|
||||
var Division = org.warp.picalculator.math.functions.Division;
|
||||
var Multiplication = org.warp.picalculator.math.functions.Multiplication;
|
||||
|
||||
var ObjectArrayList = Java.type("it.unimi.dsi.fastutil.objects.ObjectArrayList");
|
||||
|
||||
/**
|
||||
* Fractions rule
|
||||
* a / (b / c) = (a * c) / b
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
var rule = {
|
||||
// Rule name
|
||||
getRuleName: function() {
|
||||
return "FractionsRule11";
|
||||
},
|
||||
// Rule type
|
||||
getRuleType: function() {
|
||||
return RuleType.EXPANSION;
|
||||
},
|
||||
/* Rule function
|
||||
Returns:
|
||||
- null if it's not executable on the function "f"
|
||||
- An ObjectArrayList<Function> if it did something
|
||||
*/
|
||||
|
||||
execute: function(f) {
|
||||
var isExecutable;
|
||||
if (ScriptUtils.instanceOf(f, Division.class)) {
|
||||
var fnc = f;
|
||||
var a;
|
||||
var c;
|
||||
var div2;
|
||||
if (ScriptUtils.instanceOf(fnc.getParameter2(), Division.class)) {
|
||||
div2 = fnc.getParameter2();
|
||||
a = fnc.getParameter1();
|
||||
c = div2.getParameter2();
|
||||
isExecutable = true;
|
||||
} else {
|
||||
isExecutable = false;
|
||||
}
|
||||
}
|
||||
if (isExecutable) {
|
||||
var result = new ObjectArrayList();
|
||||
var fnc = f;
|
||||
var a;
|
||||
var b;
|
||||
var c;
|
||||
|
||||
var div2 = fnc.getParameter2();
|
||||
|
||||
a = fnc.getParameter1();
|
||||
b = div2.getParameter1();
|
||||
c = div2.getParameter2();
|
||||
result.add(new Division(fnc.getMathContext(), new Multiplication(fnc.getMathContext(), a, c), b));
|
||||
|
||||
return result;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add this rule to the list of rules
|
||||
RulesManager.addRule(engine.getInterface(rule, Rule.class));
|
57
src/main/resources/rules/FractionsRule2.js
Normal file
57
src/main/resources/rules/FractionsRule2.js
Normal file
@ -0,0 +1,57 @@
|
||||
//Imports
|
||||
|
||||
|
||||
var Error = org.warp.picalculator.Error;
|
||||
var Function = org.warp.picalculator.math.Function;
|
||||
var Division = org.warp.picalculator.math.functions.Division;
|
||||
var Number = org.warp.picalculator.math.functions.Number;
|
||||
|
||||
var ObjectArrayList = Java.type("it.unimi.dsi.fastutil.objects.ObjectArrayList");
|
||||
|
||||
/**
|
||||
* Fractions rule
|
||||
* a / 1 = a
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
var rule = {
|
||||
// Rule name
|
||||
getRuleName: function() {
|
||||
return "FractionsRule2";
|
||||
},
|
||||
// Rule type
|
||||
getRuleType: function() {
|
||||
return RuleType.CALCULATION;
|
||||
},
|
||||
/* Rule function
|
||||
Returns:
|
||||
- null if it's not executable on the function "f"
|
||||
- An ObjectArrayList<Function> if it did something
|
||||
*/
|
||||
|
||||
execute: function(f) {
|
||||
var isExecutable;
|
||||
if (ScriptUtils.instanceOf(f, Division.class)) {
|
||||
var fnc = f;
|
||||
if (ScriptUtils.instanceOf(fnc.getParameter2(), Number.class)) {
|
||||
var numb = fnc.getParameter2();
|
||||
if (numb.equals(new Number(f.getMathContext(), 1))) {
|
||||
isExecutable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isExecutable) {
|
||||
var result = new ObjectArrayList();
|
||||
var fnc = f;
|
||||
result.add(fnc.getParameter1());
|
||||
return result;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add this rule to the list of rules
|
||||
RulesManager.addRule(engine.getInterface(rule, Rule.class));
|
53
src/main/resources/rules/FractionsRule3.js
Normal file
53
src/main/resources/rules/FractionsRule3.js
Normal file
@ -0,0 +1,53 @@
|
||||
//Imports
|
||||
|
||||
|
||||
var Error = org.warp.picalculator.Error;
|
||||
var Function = org.warp.picalculator.math.Function;
|
||||
var Division = org.warp.picalculator.math.functions.Division;
|
||||
var Number = org.warp.picalculator.math.functions.Number;
|
||||
|
||||
var ObjectArrayList = Java.type("it.unimi.dsi.fastutil.objects.ObjectArrayList");
|
||||
|
||||
/**
|
||||
* Fractions rule
|
||||
* a / a = 1
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
var rule = {
|
||||
// Rule name
|
||||
getRuleName: function() {
|
||||
return "FractionsRule3";
|
||||
},
|
||||
// Rule type
|
||||
getRuleType: function() {
|
||||
return RuleType.EXPANSION;
|
||||
},
|
||||
/* Rule function
|
||||
Returns:
|
||||
- null if it's not executable on the function "f"
|
||||
- An ObjectArrayList<Function> if it did something
|
||||
*/
|
||||
|
||||
execute: function(f) {
|
||||
var isExecutable;
|
||||
if (ScriptUtils.instanceOf(f, Division.class)) {
|
||||
var fnc = f;
|
||||
if (fnc.getParameter1().equals(fnc.getParameter2())) {
|
||||
isExecutable = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isExecutable) {
|
||||
var result = new ObjectArrayList();
|
||||
result.add(new Number(f.getMathContext(), 1));
|
||||
return result;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add this rule to the list of rules
|
||||
RulesManager.addRule(engine.getInterface(rule, Rule.class));
|
61
src/main/resources/rules/FractionsRule4.js
Normal file
61
src/main/resources/rules/FractionsRule4.js
Normal file
@ -0,0 +1,61 @@
|
||||
//Imports
|
||||
|
||||
|
||||
var Error = org.warp.picalculator.Error;
|
||||
var Function = org.warp.picalculator.math.Function;
|
||||
var Division = org.warp.picalculator.math.functions.Division;
|
||||
var Number = org.warp.picalculator.math.functions.Number;
|
||||
var Power = org.warp.picalculator.math.functions.Power;
|
||||
|
||||
var ObjectArrayList = Java.type("it.unimi.dsi.fastutil.objects.ObjectArrayList");
|
||||
|
||||
/**
|
||||
* Fractions rule
|
||||
* (a / b) ^ -1 = b / a
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
var rule = {
|
||||
// Rule name
|
||||
getRuleName: function() {
|
||||
return "FractionsRule4";
|
||||
},
|
||||
// Rule type
|
||||
getRuleType: function() {
|
||||
return RuleType.EXPANSION;
|
||||
},
|
||||
/* Rule function
|
||||
Returns:
|
||||
- null if it's not executable on the function "f"
|
||||
- An ObjectArrayList<Function> if it did something
|
||||
*/
|
||||
|
||||
execute: function(f) {
|
||||
var isExecutable;
|
||||
if (ScriptUtils.instanceOf(f, Power.class)) {
|
||||
var fnc = f;
|
||||
if (ScriptUtils.instanceOf(fnc.getParameter1(), Division.class) && ScriptUtils.instanceOf(fnc.getParameter2(), Number.class)) {
|
||||
var n2 = fnc.getParameter2();
|
||||
if (n2.equals(new Number(f.getMathContext(), -1))) {
|
||||
isExecutable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isExecutable) {
|
||||
var result = new ObjectArrayList();
|
||||
var fnc = f;
|
||||
var a = (fnc.getParameter1()).getParameter1();
|
||||
var b = (fnc.getParameter1()).getParameter2();
|
||||
var res = new Division(f.getMathContext(), b, a);
|
||||
result.add(res);
|
||||
return result;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add this rule to the list of rules
|
||||
RulesManager.addRule(engine.getInterface(rule, Rule.class));
|
76
src/main/resources/rules/FractionsRule5.js
Normal file
76
src/main/resources/rules/FractionsRule5.js
Normal file
@ -0,0 +1,76 @@
|
||||
//Imports
|
||||
|
||||
|
||||
var BigDecimal = Java.type("java.math.BigDecimal");
|
||||
|
||||
var Error = org.warp.picalculator.Error;
|
||||
var Function = org.warp.picalculator.math.Function;
|
||||
var MathContext = org.warp.picalculator.math.MathContext;
|
||||
var Division = org.warp.picalculator.math.functions.Division;
|
||||
var Number = org.warp.picalculator.math.functions.Number;
|
||||
var Power = org.warp.picalculator.math.functions.Power;
|
||||
|
||||
var ObjectArrayList = Java.type("it.unimi.dsi.fastutil.objects.ObjectArrayList");
|
||||
|
||||
/**
|
||||
* Fractions rule
|
||||
* (a / b) ^ -c = (b / a) ^ c
|
||||
*
|
||||
* @author Andrea Cavalli
|
||||
*
|
||||
*/
|
||||
var rule = {
|
||||
// Rule name
|
||||
getRuleName: function() {
|
||||
return "FractionsRule5";
|
||||
},
|
||||
// Rule type
|
||||
getRuleType: function() {
|
||||
return RuleType.EXPANSION;
|
||||
},
|
||||
/* Rule function
|
||||
Returns:
|
||||
- null if it's not executable on the function "f"
|
||||
- An ObjectArrayList<Function> if it did something
|
||||
*/
|
||||
|
||||
execute: function(f) {
|
||||
var isExecutable;
|
||||
if (ScriptUtils.instanceOf(f, Power.class)) {
|
||||
var fnc = f;
|
||||
if (ScriptUtils.instanceOf(fnc.getParameter1(), Division.class)) {
|
||||
if (ScriptUtils.instanceOf(fnc.getParameter2(), Multiplication.class) && fnc.getParameter2().getParameter1().equals(new Number(f.getMathContext(), -1))) {
|
||||
isExecutable = true;
|
||||
} else if (ScriptUtils.instanceOf(fnc.getParameter2(), Number.class)) {
|
||||
var n2 = fnc.getParameter2();
|
||||
if (n2.getTerm().compareTo(BigDecimal.ZERO) < 0) {
|
||||
isExecutable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isExecutable) {
|
||||
var root = f.getMathContext();
|
||||
var result = new ObjectArrayList();
|
||||
var fnc = f;
|
||||
var a = (fnc.getParameter1()).getParameter1();
|
||||
var b = (fnc.getParameter1()).getParameter2();
|
||||
var c;
|
||||
if (ScriptUtils.instanceOf(fnc.getParameter2(), Multiplication.class)) {
|
||||
c = fnc.getParameter2().getParameter2();
|
||||
} else {
|
||||
c = fnc.getParameter2().multiply(new Number(root, "-1"));
|
||||
}
|
||||
var dv = new Division(root, b, a);
|
||||
var pow = new Power(root, dv, c);
|
||||
result.add(pow);
|
||||
return result;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add this rule to the list of rules
|
||||
RulesManager.addRule(engine.getInterface(rule, Rule.class));
|
Loading…
Reference in New Issue
Block a user