Removes usage of js Infinity values.

Also this change cleans extra code in Math for float parameters.

Change-Id: I0eea8cc548dacae8be6d4d9e4ed66b7e509aef6a
diff --git a/user/super/com/google/gwt/emul/java/lang/Double.java b/user/super/com/google/gwt/emul/java/lang/Double.java
index 5db5b0b..390f694 100644
--- a/user/super/com/google/gwt/emul/java/lang/Double.java
+++ b/user/super/com/google/gwt/emul/java/lang/Double.java
@@ -204,12 +204,12 @@
   }
 
   public static boolean isInfinite(double x) {
-    return x == JsUtils.getInfinity() || x == -JsUtils.getInfinity();
+    return x == POSITIVE_INFINITY || x == NEGATIVE_INFINITY;
   }
 
-  public static native boolean isNaN(double x) /*-{
-    return isNaN(x);
-  }-*/;
+  public static boolean isNaN(double x) {
+    return JsUtils.isNaN(x);
+  }
 
   public static double longBitsToDouble(long bits) {
     long ihi = (long) (bits >> 32);
diff --git a/user/super/com/google/gwt/emul/java/lang/Math.java b/user/super/com/google/gwt/emul/java/lang/Math.java
index f3b4f23..fce3019 100644
--- a/user/super/com/google/gwt/emul/java/lang/Math.java
+++ b/user/super/com/google/gwt/emul/java/lang/Math.java
@@ -15,7 +15,6 @@
  */
 package java.lang;
 
-import javaemul.internal.JsUtils;
 import jsinterop.annotations.JsPackage;
 import jsinterop.annotations.JsType;
 
@@ -223,15 +222,7 @@
   }
 
   public static float scalb(float f, int scaleFactor) {
-    if (scaleFactor >= 31 || scaleFactor <= -31) {
-      return f * (float) Math.pow(2, scaleFactor);
-    } else if (scaleFactor > 0) {
-      return f * (1 << scaleFactor);
-    } else if (scaleFactor == 0) {
-      return f;
-    } else {
-      return f * 1.0f / (1 << -scaleFactor);
-    }
+    return (float) scalb((double) f, scaleFactor);
   }
 
   public static double signum(double d) {
@@ -245,13 +236,7 @@
   }
 
   public static float signum(float f) {
-    if (f > 0.0f) {
-      return 1.0f;
-    } else if (f < 0.0f) {
-      return -1.0f;
-    } else {
-      return 0.0f;
-    }
+    return (float) signum((double) f);
   }
 
   public static double sin(double x) {
@@ -271,10 +256,8 @@
   }
 
   public static double tanh(double x) {
-    if (x == JsUtils.getInfinity()) {
-      return 1.0d;
-    } else if (x == -JsUtils.getInfinity()) {
-      return -1.0d;
+    if (Double.isInfinite(x)) {
+      return signum(x);
     }
 
     double e2x = Math.exp(2.0 * x);
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
index a1ecbde..4a7b817 100644
--- a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
+++ b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
@@ -20,8 +20,8 @@
  */
 public class JsUtils {
 
-  public static native double getInfinity() /*-{
-    return Infinity;
+  public static native boolean isNaN(double d) /*-{
+    return isNaN(d);
   }-*/;
 
   public static native int parseInt(String s, int radix) /*-{