Handle ln(rational multiple of e) better
Bug: 37486067
In particular, ln(e) is now a rational one.
Test: Unit tests, manual test.
Change-Id: I3cc57a4a84ec6667d3c8554c4fc234f9aa7c2e86
(cherry picked from commit bf2e69ae00d7b70562822769c100c3ddcc928b17)
diff --git a/src/com/android/calculator2/UnifiedReal.java b/src/com/android/calculator2/UnifiedReal.java
index f6cf50b..61cac29 100644
--- a/src/com/android/calculator2/UnifiedReal.java
+++ b/src/com/android/calculator2/UnifiedReal.java
@@ -1011,6 +1011,9 @@
}
public UnifiedReal ln() {
+ if (mCrFactor == CR_E) {
+ return new UnifiedReal(mRatFactor, CR_ONE).ln().add(ONE);
+ }
if (isComparable(ZERO)) {
if (signum() <= 0) {
throw new ArithmeticException("log(non-positive)");