Return 1f in Log(Ac/De)celerateInterpolators on a 1f input.

In battery saver mode, animations skip directly to the final values.
For LogDecelerateInterpolator, however, an input of 1f outputs an
interpolated 0.99999994. This meant that the FirstFrameAnimatorHelper
didn't realize that this was the last frame, and messed things up.
Since any interpolator should return 1 on an input of 1, we just
short-circuit in that case for the log interpolators.

Bug: 25666809
Change-Id: I60527e3758cea383fbcf50acb95460a7bd9ab43c
(cherry picked from commit 8dd24099233c8a2e3e94350a23e4880f3aa89c28)
diff --git a/src/com/android/launcher3/LogAccelerateInterpolator.java b/src/com/android/launcher3/LogAccelerateInterpolator.java
index c3bbfa5..519d391 100644
--- a/src/com/android/launcher3/LogAccelerateInterpolator.java
+++ b/src/com/android/launcher3/LogAccelerateInterpolator.java
@@ -20,6 +20,8 @@
 
     @Override
     public float getInterpolation(float t) {
-        return 1 - computeLog(1 - t, mBase, mDrift) * mLogScale;
+        // Due to rounding issues, the interpolation doesn't quite reach 1 even though it should.
+        // To account for this, we short-circuit to return 1 if the input is 1.
+        return Float.compare(t, 1f) == 0 ? 1f : 1 - computeLog(1 - t, mBase, mDrift) * mLogScale;
     }
 }
diff --git a/src/com/android/launcher3/LogDecelerateInterpolator.java b/src/com/android/launcher3/LogDecelerateInterpolator.java
index 4c5f6f0..7d95282 100644
--- a/src/com/android/launcher3/LogDecelerateInterpolator.java
+++ b/src/com/android/launcher3/LogDecelerateInterpolator.java
@@ -21,6 +21,8 @@
 
     @Override
     public float getInterpolation(float t) {
-        return computeLog(t, mBase, mDrift) * mLogScale;
+        // Due to rounding issues, the interpolation doesn't quite reach 1 even though it should.
+        // To account for this, we short-circuit to return 1 if the input is 1.
+        return Float.compare(t, 1f) == 0 ? 1f : computeLog(t, mBase, mDrift) * mLogScale;
     }
 }