Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de1be370 authored by Steve Kondik's avatar Steve Kondik
Browse files

Merge tag 'LA.UM.5.5.r1-00900-8x96.0' of...

Merge tag 'LA.UM.5.5.r1-00900-8x96.0' of git://codeaurora.org/platform/packages/apps/ExactCalculator into cm-14.0

"LA.UM.5.5.r1-00900-8x96.0"
parents 2d20bbc2 82d19f31
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -873,19 +873,25 @@ class CalculatorExpr {
     * Unlike the "general" case using logarithms, this handles a negative base.
     */
    private static CR pow(CR base, BigInteger exp) {
        if (exp.compareTo(BigInteger.ZERO) < 0) {
            return pow(base, exp.negate()).inverse();
        BigInteger bigInteger = new BigInteger(exp.toString());

        if (bigInteger.compareTo(BigInteger.ZERO) < 0) {
            return pow(base, bigInteger.negate()).inverse();
        }
        if (exp.equals(BigInteger.ONE)) {

        if (bigInteger.equals(BigInteger.ONE)) {
            return base;
        }
        if (exp.and(BigInteger.ONE).intValue() == 1) {
            return pow(base, exp.subtract(BigInteger.ONE)).multiply(base);

        if (bigInteger.and(BigInteger.ONE).intValue() == 1) {
            return pow(base, bigInteger.subtract(BigInteger.ONE)).multiply(base);
        }
        if (exp.equals(BigInteger.ZERO)) {

        if (bigInteger.equals(BigInteger.ZERO)) {
            return CR.valueOf(1);
        }
        CR tmp = pow(base, exp.shiftRight(1));

        CR tmp = pow(base, bigInteger.shiftRight(1));
        return tmp.multiply(tmp);
    }

@@ -961,7 +967,8 @@ class CalculatorExpr {
            // values.  That wouldn't work reliably with floating point either.
            BigInteger int_exp = BoundedRational.asBigInteger(exp.ratVal);
            if (int_exp != null) {
                crVal = pow(crVal, int_exp);
                BigInteger bigInteger = new BigInteger(int_exp.toString());
                crVal = pow(crVal, bigInteger);
            } else {
                crVal = crVal.ln().multiply(exp.val).exp();
            }