Skip to content

Commit 0b7516a

Browse files
Removed patch since Expand is fixed
1 parent 31932f7 commit 0b7516a

File tree

1 file changed

+31
-21
lines changed

1 file changed

+31
-21
lines changed

src/javacalculus/evaluator/CalcINT.java

+31-21
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
import java.util.ArrayList;
44
import java.util.List;
55
import javacalculus.core.CALC;
6-
import javacalculus.core.CalcParser;
76
import javacalculus.core.DeepCopy;
87
import javacalculus.evaluator.extend.CalcFunctionEvaluator;
9-
import javacalculus.exception.CalcSyntaxException;
108
import javacalculus.exception.CalcWrongParametersException;
119
import javacalculus.struct.*;
1210

@@ -37,7 +35,7 @@ public CalcObject evaluate(CalcFunction function) {
3735
}
3836

3937
public CalcObject integrate(CalcObject object, CalcSymbol var) {
40-
////System.out.println("ATTEMPTING TO INTEGRATE " + object.toString());
38+
//System.out.println("ATTEMPTING TO INTEGRATE " + object.toString());
4139
CalcObject obj = object;
4240
if (obj instanceof CalcFunction) { //input f(x..xn)
4341
////////System.out.println("FINNA EVAL THAT OBJ");
@@ -66,7 +64,7 @@ public CalcObject integrate(CalcObject object, CalcSymbol var) {
6664
CalcFunction functionB = new CalcFunction(CALC.ADD, function, 1, function.size());
6765
return CALC.ADD.createFunction(integrate(function.get(0), var), integrate(functionB, var));
6866
}
69-
if (obj.getHeader().equals(CALC.MULTIPLY)) { //INT(c*f(x),x) = c*INT(f(x),x)
67+
if (obj.getHeader().equals(CALC.MULTIPLY) || obj.getHeader().equals(CALC.POWER) && ((CalcFunction) obj).get(0).getHeader().equals(CALC.LN)) { //INT(c*f(x),x) = c*INT(f(x),x)
7068
////////System.out.println("INTEGRATING MULTIPLY");
7169
CalcFunction function = new CalcFunction(CALC.MULTIPLY);
7270
function.addAll((CalcFunction) obj);
@@ -80,22 +78,22 @@ public CalcObject integrate(CalcObject object, CalcSymbol var) {
8078
//SEC(x)*TAN(x) => SEC(x)
8179
//CSC(x)*COT(x) => -CSC(x)
8280
//CalcObject tempx = (CalcObject) DeepCopy.copy(obj);
83-
81+
8482
//WHAT THE FUCK IS THIS
85-
86-
CalcObject wtf;
87-
CalcParser p = new CalcParser();
88-
try {
89-
wtf = p.parse(obj.toString());
90-
} catch (CalcSyntaxException ex) {
91-
return CALC.ERROR;
92-
}
93-
CalcObject expanded = CALC.SYM_EVAL(CALC.EXPAND.createFunction(wtf));
83+
/*CalcObject wtf;
84+
CalcParser p = new CalcParser();
85+
try {
86+
wtf = p.parse(obj.toString());
87+
} catch (CalcSyntaxException ex) {
88+
return CALC.ERROR;
89+
}*/
90+
//CalcObject expanded = CALC.SYM_EVAL(CALC.EXPAND.createFunction(wtf));
91+
//System.out.println("LETS EXPAND " + obj);
92+
CalcObject expanded = CALC.SYM_EVAL(CALC.EXPAND.createFunction(obj));
9493
//System.out.println(wtf);
9594
//System.out.println("IN MULTIPLICATION, " + obj + " AND EXPANDED " + expanded);
96-
95+
9796
//LIKE WHAT THE ACTUAL FUCK
98-
9997
if (obj.equals(expanded)) {
10098
//System.out.println("NOT EXPANSION BRANCH");
10199
if (CALC.full_integrate_mode && recDepth < CALC.max_recursion_depth) {
@@ -127,6 +125,17 @@ public CalcObject integrate(CalcObject object, CalcSymbol var) {
127125
}
128126
}
129127
}
128+
//try parts here instead NO
129+
/*{
130+
System.out.println("WE ARE HERE");
131+
if (CALC.full_integrate_mode && recDepth < CALC.max_recursion_depth) {
132+
CalcObject temp = CALC.SYM_EVAL(new CalcINTBYPARTS(recDepth + 1).integrate(object, var));
133+
System.out.println("GOING HARD MODE");
134+
if (temp != null && !temp.equals(CALC.ERROR)) {
135+
return temp;
136+
}
137+
}
138+
}*/
130139
if (obj.getHeader().equals(CALC.POWER)) { //this part is probably trickiest (form f(x)^g(x)). A lot of integrals here does not evaluate into elementary functions
131140
////////System.out.println("INTEGRATING POWER");
132141
CalcFunction function = (CalcFunction) obj;
@@ -353,10 +362,10 @@ private CalcObject excecuteSub(CalcObject input, CalcSymbol var) //First bucket
353362
return CALC.ERROR;
354363
}
355364
ArrayList<CalcObject> toIntegrate = new ArrayList<>();
356-
CalcINT subIntegrator = new CalcINT(recDepth);
357365
CalcObject[] sub = doUSub(input, var);
358366
if (sub != null) {
359-
//System.out.println("Sub did not fail for " + sub[1]);
367+
//System.out.println("uSub Func: " + sub[0] + " Sub: " + sub[1]);
368+
CalcINT subIntegrator = new CalcINT(recDepth + 1);
360369
CalcObject intResult = CALC.SYM_EVAL(subIntegrator.integrate(sub[0], var));
361370
intResult = substitute(intResult, var, sub[1]);
362371
//System.out.println("INT RESULT: " + intResult);
@@ -370,16 +379,17 @@ private CalcObject excecuteSub(CalcObject input, CalcSymbol var) //First bucket
370379
CalcINT trigIntegrator = new CalcINT(recDepth + 1);
371380
CalcObject answer = CALC.SYM_EVAL(trigIntegrator.integrate((CalcObject) DeepCopy.copy(trigSubbed), var));
372381
if (!answer.equals(CALC.ERROR)) {
373-
//System.out.println("NO ERROR IN TRIG SUB: " + answer);
382+
//System.out.println("Trig Func: " + trigSubbed + " Int: " + answer);
374383
return answer;
375384
}
376385
}
377386
//System.out.println("TRig sub failed, attempting u-trig mix");
378387
for (CalcObject test : toIntegrate) {
379388
sub = doUSub(test, var);
380389
if (sub != null) {
381-
//System.out.println("TRIG -uSub did not fail");
382-
CalcObject intResult = CALC.SYM_EVAL(subIntegrator.integrate(sub[0], var));
390+
//System.out.println("Trig-uSub Func: " + sub[0] + " Sub: " + sub[1]);
391+
CalcINT trigIntegrator = new CalcINT(recDepth + 1);
392+
CalcObject intResult = CALC.SYM_EVAL(trigIntegrator.integrate(sub[0], var));
383393
intResult = substitute(intResult, var, sub[1]);
384394
//System.out.println("INT RESULT: " + intResult);
385395
return intResult;

0 commit comments

Comments
 (0)