use of org.matheclipse.core.interfaces.IRational in project symja_android_library by axkr.
the class PolynomialHomogenizationNew method replaceTimes.
private IExpr replaceTimes(final IAST ast, final IExpr base, IExpr exp) {
IExpr first = exp.first();
if (first.isComplex() && ((IComplex) first).reRational().isZero()) {
IRational imPart = ((IComplex) first).imRational();
int exponent = imPart.toIntDefault();
if (exponent == Integer.MIN_VALUE) {
return replaceExpression(ast).orElse(ast);
} else if (exponent > 0) {
IASTMutable restExponent = ((IAST) exp).setAtCopy(1, F.CI);
return F.Power(replaceExpression(base.power(restExponent)), exponent);
}
return replaceExpression(ast);
}
int exponent = first.toIntDefault();
if (exponent == Integer.MIN_VALUE) {
return replaceExpression(ast);
} else if (exponent > 0) {
IExpr rest = exp.rest().oneIdentity1();
return F.Power(replaceExpression(base.power(rest)), exponent);
}
return replaceExpression(ast).orElse(ast);
}
use of org.matheclipse.core.interfaces.IRational in project symja_android_library by axkr.
the class PolynomialHomogenizationNew method determineTimes.
private void determineTimes(final IAST ast, final IExpr base, IAST timesExponent) {
IExpr first = timesExponent.first();
if (first.isComplex() && ((IComplex) first).reRational().isZero()) {
IRational pureImPart = ((IComplex) first).imRational();
int exponent = pureImPart.toIntDefault();
if (exponent == Integer.MIN_VALUE) {
replaceExpressionLCM(ast, F.C1);
return;
} else if (exponent > 0) {
IASTMutable restExponent = timesExponent.setAtCopy(1, F.CI);
replaceExpressionLCM(base.power(restExponent), F.C1);
return;
}
replaceExpressionLCM(ast, F.C1);
return;
}
int exponent = first.toIntDefault();
if (exponent == Integer.MIN_VALUE) {
replaceExpressionLCM(ast, F.C1);
return;
} else if (exponent > 0) {
IExpr rest = timesExponent.rest().oneIdentity1();
replaceExpressionLCM(base.power(rest), F.C1);
return;
}
replaceExpressionLCM(ast, F.C1);
}
use of org.matheclipse.core.interfaces.IRational in project symja_android_library by axkr.
the class PolynomialHomogenization method replaceTimes.
private IExpr replaceTimes(final IAST ast, final IExpr base, IExpr exp) {
IExpr first = exp.first();
if (first.isComplex() && ((IComplex) first).reRational().isZero()) {
IRational imPart = ((IComplex) first).imRational();
int exponent = imPart.toIntDefault();
if (exponent == Integer.MIN_VALUE) {
return replaceExpression(ast).orElse(ast);
} else if (exponent > 0) {
IASTMutable restExponent = ((IAST) exp).setAtCopy(1, F.CI);
return F.Power(replaceExpression(base.power(restExponent)), exponent);
}
return replaceExpression(ast);
}
int exponent = first.toIntDefault();
if (exponent == Integer.MIN_VALUE) {
return replaceExpression(ast);
} else if (exponent > 0) {
IExpr rest = exp.rest().oneIdentity1();
return F.Power(replaceExpression(base.power(rest)), exponent);
}
return replaceExpression(ast).orElse(ast);
}
use of org.matheclipse.core.interfaces.IRational in project symja_android_library by axkr.
the class PolynomialHomogenization method determineTimes.
private void determineTimes(final IAST ast, final IExpr base, IAST timesExponent) {
IExpr first = timesExponent.first();
if (first.isComplex() && ((IComplex) first).reRational().isZero()) {
IRational pureImPart = ((IComplex) first).imRational();
int exponent = pureImPart.toIntDefault();
if (exponent == Integer.MIN_VALUE) {
replaceExpressionLCM(ast, F.C1);
return;
} else if (exponent > 0) {
IASTMutable restExponent = timesExponent.setAtCopy(1, F.CI);
replaceExpressionLCM(base.power(restExponent), F.C1);
return;
}
replaceExpressionLCM(ast, F.C1);
return;
}
int exponent = first.toIntDefault();
if (exponent == Integer.MIN_VALUE) {
replaceExpressionLCM(ast, F.C1);
return;
} else if (exponent > 0) {
IExpr rest = timesExponent.rest().oneIdentity1();
replaceExpressionLCM(base.power(rest), F.C1);
return;
}
replaceExpressionLCM(ast, F.C1);
}
use of org.matheclipse.core.interfaces.IRational in project symja_android_library by axkr.
the class PolynomialHomogenization method replacePower.
private IExpr replacePower(final IExpr exprPoly, ISignedNumber exp) {
ISymbol symbol = substitutedExpr.get(exprPoly);
if (symbol != null) {
IInteger lcm = getLCM(symbol);
if (lcm.isOne()) {
lcm = F.C1;
}
if (lcm.isOne() && exp.isInteger()) {
return F.Power(symbol, exp);
}
IRational rat = exp.rationalFactor();
if (rat != null) {
IInteger intExp = rat.multiply(lcm).numerator();
int exponent = intExp.toIntDefault();
if (exponent != Integer.MIN_VALUE) {
if (exponent == 1) {
return symbol;
}
return F.Power(symbol, exponent);
}
}
return F.Power(symbol, F.Times(lcm, exp));
}
return F.NIL;
}
Aggregations