Merge "Fix the OOME in ScannerParseLargeFileBenchmarkTest"
diff --git a/NOTICE b/NOTICE
index 818f6c5..951e506 100644
--- a/NOTICE
+++ b/NOTICE
@@ -32,7 +32,7 @@
    ==  NOTICE file for the ICU License.                                   ==
    =========================================================================
 
-Copyright (c) 1995-2009 International Business Machines Corporation and others
+Copyright (c) 1995-2014 International Business Machines Corporation and others
 
 All rights reserved.
 
@@ -66,250 +66,6 @@
 
 
    =========================================================================
-   ==  NOTICE file for the JUnit License.                                 ==
-   =========================================================================
-
-Common Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
-THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-      a) in the case of the initial Contributor, the initial code and
-         documentation distributed under this Agreement, and
-      b) in the case of each subsequent Contributor:
-
-      i) changes to the Program, and
-
-      ii) additions to the Program;
-
-      where such changes and/or additions to the Program originate
-      from and are distributed by that particular Contributor. A
-      Contribution 'originates' from a Contributor if it was added to
-      the Program by such Contributor itself or anyone acting on such
-      Contributor's behalf. Contributions do not include additions to
-      the Program which: (i) are separate modules of software
-      distributed in conjunction with the Program under their own
-      license agreement, and (ii) are not derivative works of the
-      Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents " mean patent claims licensable by a Contributor
-which are necessarily infringed by the use or sale of its Contribution
-alone or when combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this
-Agreement.
-
-"Recipient" means anyone who receives the Program under this
-Agreement, including all Contributors.
-
-2. GRANT OF RIGHTS
-
-      a) Subject to the terms of this Agreement, each Contributor
-      hereby grants Recipient a non-exclusive, worldwide, royalty-free
-      copyright license to reproduce, prepare derivative works of,
-      publicly display, publicly perform, distribute and sublicense
-      the Contribution of such Contributor, if any, and such
-      derivative works, in source code and object code form.
-
-      b) Subject to the terms of this Agreement, each Contributor
-      hereby grants Recipient a non-exclusive, worldwide, royalty-free
-      patent license under Licensed Patents to make, use, sell, offer
-      to sell, import and otherwise transfer the Contribution of such
-      Contributor, if any, in source code and object code form. This
-      patent license shall apply to the combination of the
-      Contribution and the Program if, at the time the Contribution is
-      added by the Contributor, such addition of the Contribution
-      causes such combination to be covered by the Licensed Patents.
-      The patent license shall not apply to any other combinations
-      which include the Contribution. No hardware per se is licensed
-      hereunder.
-
-      c) Recipient understands that although each Contributor grants
-      the licenses to its Contributions set forth herein, no
-      assurances are provided by any Contributor that the Program does
-      not infringe the patent or other intellectual property rights of
-      any other entity. Each Contributor disclaims any liability to
-      Recipient for claims brought by any other entity based on
-      infringement of intellectual property rights or otherwise. As a
-      condition to exercising the rights and licenses granted
-      hereunder, each Recipient hereby assumes sole responsibility to
-      secure any other intellectual property rights needed, if any.
-      For example, if a third party patent license is required to
-      allow Recipient to distribute the Program, it is Recipient's
-      responsibility to acquire that license before distributing the
-      Program.
-
-      d) Each Contributor represents that to its knowledge it has
-      sufficient copyright rights in its Contribution, if any, to
-      grant the copyright license set forth in this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form
-under its own license agreement, provided that:
-
-      a) it complies with the terms and conditions of this Agreement; and
-
-      b) its license agreement:
-
-      i) effectively disclaims on behalf of all Contributors all
-      warranties and conditions, express and implied, including
-      warranties or conditions of title and non-infringement, and
-      implied warranties or conditions of merchantability and fitness
-      for a particular purpose;
-
-      ii) effectively excludes on behalf of all Contributors all
-      liability for damages, including direct, indirect, special,
-      incidental and consequential damages, such as lost profits;
-
-      iii) states that any provisions which differ from this Agreement
-      are offered by that Contributor alone and not by any other
-      party; and
-
-      iv) states that source code for the Program is available from
-      such Contributor, and informs licensees how to obtain it in a
-      reasonable manner on or through a medium customarily used for
-      software exchange.
-
-When the Program is made available in source code form:
-
-      a) it must be made available under this Agreement; and 
-
-      b) a copy of this Agreement must be included with each copy of
-      the Program.
-
-Contributors may not remove or alter any copyright notices contained
-within the Program.
-
-Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a
-commercial product offering should do so in a manner which does not
-create potential liability for other Contributors. Therefore, if a
-Contributor includes the Program in a commercial product offering,
-such Contributor ("Commercial Contributor") hereby agrees to defend
-and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising
-from claims, lawsuits and other legal actions brought by a third party
-against the Indemnified Contributor to the extent caused by the acts
-or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement.
-In order to qualify, an Indemnified Contributor must: a) promptly
-notify the Commercial Contributor in writing of such claim, and b)
-allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement
-negotiations. The Indemnified Contributor may participate in any such
-claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
-WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement, including but not limited to
-the risks and costs of program errors, compliance with applicable
-laws, damage to or loss of data, programs or equipment, and
-unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
-ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further
-action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against a Contributor with
-respect to a patent applicable to software (including a cross-claim or
-counterclaim in a lawsuit), then any patent licenses granted by that
-Contributor to such Recipient under this Agreement shall terminate as
-of the date such litigation is filed. In addition, if Recipient
-institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program
-itself (excluding combinations of the Program with other software or
-hardware) infringes such Recipient's patent(s), then such Recipient's
-rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of
-time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use
-and distribution of the Program as soon as reasonably practicable.
-However, Recipient's obligations under this Agreement and any licenses
-granted by Recipient relating to the Program shall continue and
-survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement,
-but in order to avoid inconsistency the Agreement is copyrighted and
-may only be modified in the following manner. The Agreement Steward
-reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement
-Steward has the right to modify this Agreement. IBM is the initial
-Agreement Steward. IBM may assign the responsibility to serve as the
-Agreement Steward to a suitable separate entity. Each new version of
-the Agreement will be given a distinguishing version number. The
-Program (including Contributions) may always be distributed subject to
-the version of the Agreement under which it was received. In addition,
-after a new version of the Agreement is published, Contributor may
-elect to distribute the Program (including its Contributions) under
-the new version. Except as expressly stated in Sections 2(a) and 2(b)
-above, Recipient receives no rights or licenses to the intellectual
-property of any Contributor under this Agreement, whether expressly,
-by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No
-party to this Agreement will bring a legal action under this Agreement
-more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.
-
-
-   =========================================================================
    ==  NOTICE file for the KXML License.                                  ==
    =========================================================================
 
@@ -336,38 +92,6 @@
 
 
    =========================================================================
-   ==  NOTICE file for the SQLite Java Wrapper License.                   ==
-   =========================================================================
-
-This software is copyrighted by Christian Werner <chw@ch-werner.de>
-and others. The following terms apply to all files associated with the
-software unless explicitly disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-
-   =========================================================================
    ==  NOTICE file for the W3C License.                                   ==
    =========================================================================
 
diff --git a/NativeCode.mk b/NativeCode.mk
index 98e87b0..12e8114 100644
--- a/NativeCode.mk
+++ b/NativeCode.mk
@@ -127,6 +127,7 @@
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat-host libicuuc-host libicui18n-host libcrypto-host libz-host
 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) libziparchive-host libutils
+LOCAL_MULTILIB := both
 include $(BUILD_HOST_SHARED_LIBRARY)
 
 ifeq ($(LIBCORE_SKIP_TESTS),)
diff --git a/benchmarks/src/benchmarks/ReferenceGetBenchmark.java b/benchmarks/src/benchmarks/ReferenceGetBenchmark.java
new file mode 100644
index 0000000..80142a1
--- /dev/null
+++ b/benchmarks/src/benchmarks/ReferenceGetBenchmark.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package benchmarks;
+
+import com.google.caliper.Param;
+import com.google.caliper.SimpleBenchmark;
+
+import java.lang.ref.Reference;
+import java.lang.ref.SoftReference;
+import java.lang.ref.WeakReference;
+import java.lang.reflect.*;
+
+public class ReferenceGetBenchmark extends SimpleBenchmark {
+    @Param boolean intrinsicDisabled;
+
+    private Object obj = "str";
+
+    protected void setUp() throws Exception {
+        Field intrinsicDisabledField = Reference.class.getDeclaredField("disableIntrinsic");
+        intrinsicDisabledField.setAccessible(true);
+        intrinsicDisabledField.setBoolean(null, intrinsicDisabled);
+    }
+
+    public void timeSoftReferenceGet(int reps) throws Exception {
+        Reference soft = new SoftReference(obj);
+        for (int i = 0; i < reps; i++) {
+            Object o = soft.get();
+        }
+    }
+
+    public void timeWeakReferenceGet(int reps) throws Exception {
+        Reference weak = new WeakReference(obj);
+        for (int i = 0; i < reps; i++) {
+            Object o = weak.get();
+        }
+    }
+
+    public void timeNonPreservedWeakReferenceGet(int reps) throws Exception {
+        Reference weak = new WeakReference(obj);
+        obj = null;
+        Runtime.getRuntime().gc();
+        for (int i = 0; i < reps; i++) {
+            Object o = weak.get();
+        }
+    }
+}
diff --git a/benchmarks/src/benchmarks/SystemArrayCopyBenchmark.java b/benchmarks/src/benchmarks/SystemArrayCopyBenchmark.java
index c22e819..5095ee1 100644
--- a/benchmarks/src/benchmarks/SystemArrayCopyBenchmark.java
+++ b/benchmarks/src/benchmarks/SystemArrayCopyBenchmark.java
@@ -24,17 +24,77 @@
           "2048", "4096", "8192", "16384", "32768", "65536", "131072", "262144"})
   int arrayLength;
 
-  // This copies a char array indirectly via String.getChars() as the
-  // System.arraycopy() call site optimization currently works within
-  // the core libraries only. Add direct System.arraycopy() benchmarks
-  // (including ones for other primitive types) later once this
-  // limitation goes away.
-  public void timeStringCharArrayCopy(int reps) {
+  // Provides benchmarking for different types of arrays using the arraycopy function.
+
+  public void timeSystemCharArrayCopy(int reps) {
     final int len = arrayLength;
+    char[] src = new char[len];
     char[] dst = new char[len];
-    String str = new String(new char[len]);
     for (int rep = 0; rep < reps; ++rep) {
-      str.getChars(0, len, dst, 0);
+      System.arraycopy(src, 0, dst, 0, len);
+    }
+  }
+
+  public void timeSystemByteArrayCopy(int reps) {
+    final int len = arrayLength;
+    byte[] src = new byte[len];
+    byte[] dst = new byte[len];
+    for (int rep = 0; rep < reps; ++rep) {
+      System.arraycopy(src, 0, dst, 0, len);
+    }
+  }
+
+  public void timeSystemShortArrayCopy(int reps) {
+    final int len = arrayLength;
+    short[] src = new short[len];
+    short[] dst = new short[len];
+    for (int rep = 0; rep < reps; ++rep) {
+      System.arraycopy(src, 0, dst, 0, len);
+    }
+  }
+
+  public void timeSystemIntArrayCopy(int reps) {
+    final int len = arrayLength;
+    int[] src = new int[len];
+    int[] dst = new int[len];
+    for (int rep = 0; rep < reps; ++rep) {
+      System.arraycopy(src, 0, dst, 0, len);
+    }
+  }
+
+  public void timeSystemLongArrayCopy(int reps) {
+    final int len = arrayLength;
+    long[] src = new long[len];
+    long[] dst = new long[len];
+    for (int rep = 0; rep < reps; ++rep) {
+      System.arraycopy(src, 0, dst, 0, len);
+    }
+  }
+
+  public void timeSystemFloatArrayCopy(int reps) {
+    final int len = arrayLength;
+    float[] src = new float[len];
+    float[] dst = new float[len];
+    for (int rep = 0; rep < reps; ++rep) {
+      System.arraycopy(src, 0, dst, 0, len);
+    }
+  }
+
+  public void timeSystemDoubleArrayCopy(int reps) {
+    final int len = arrayLength;
+    double[] src = new double[len];
+    double[] dst = new double[len];
+    for (int rep = 0; rep < reps; ++rep) {
+      System.arraycopy(src, 0, dst, 0, len);
+    }
+  }
+
+  public void timeSystemBooleanArrayCopy(int reps) {
+    final int len = arrayLength;
+    boolean[] src = new boolean[len];
+    boolean[] dst = new boolean[len];
+    for (int rep = 0; rep < reps; ++rep) {
+      System.arraycopy(src, 0, dst, 0, len);
     }
   }
 }
diff --git a/benchmarks/src/benchmarks/regression/MathBenchmark.java b/benchmarks/src/benchmarks/regression/MathBenchmark.java
index 25a871d..19b2162 100644
--- a/benchmarks/src/benchmarks/regression/MathBenchmark.java
+++ b/benchmarks/src/benchmarks/regression/MathBenchmark.java
@@ -30,339 +30,456 @@
     private final int i = 1;
     private final long l = 1L;
 
-    public void timeAbsD(int reps) {
+    // NOTE: To avoid the benchmarked function from being optimized away, we store the result
+    // and use it as the benchmark's return value. This is good enough for now but may not be in
+    // the future, a smart compiler could determine that the result value will depend on whether
+    // we get into the loop or not and turn the whole loop into an if statement.
+
+    public double timeAbsD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.abs(d);
+            result = Math.abs(d);
         }
+        return result;
     }
 
-    public void timeAbsF(int reps) {
+    public float timeAbsF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.abs(f);
+            result = Math.abs(f);
         }
+        return result;
     }
 
-    public void timeAbsI(int reps) {
+    public int timeAbsI(int reps) {
+        int result = i;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.abs(i);
+            result = Math.abs(i);
         }
+        return result;
     }
 
-    public void timeAbsL(int reps) {
+    public long timeAbsL(int reps) {
+        long result = l;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.abs(l);
+            result = Math.abs(l);
         }
+        return result;
     }
 
-    public void timeAcos(int reps) {
+    public double timeAcos(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.acos(d);
+            result = Math.acos(d);
         }
+        return result;
     }
 
-    public void timeAsin(int reps) {
+    public double timeAsin(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.asin(d);
+            result = Math.asin(d);
         }
+        return result;
     }
 
-    public void timeAtan(int reps) {
+    public double timeAtan(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.atan(d);
+            result = Math.atan(d);
         }
+        return result;
     }
 
-    public void timeAtan2(int reps) {
+    public double timeAtan2(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.atan2(3, 4);
+            result = Math.atan2(3, 4);
         }
+        return result;
     }
 
-    public void timeCbrt(int reps) {
+    public double timeCbrt(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.cbrt(d);
+            result = Math.cbrt(d);
         }
+        return result;
     }
 
-    public void timeCeil(int reps) {
+    public double timeCeil(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.ceil(d);
+            result = Math.ceil(d);
         }
+        return result;
     }
 
-    public void timeCopySignD(int reps) {
+    public double timeCopySignD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.copySign(d, d);
+            result = Math.copySign(d, d);
         }
+        return result;
     }
 
-    public void timeCopySignF(int reps) {
+    public float timeCopySignF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.copySign(f, f);
+            result = Math.copySign(f, f);
         }
+        return result;
     }
 
-    public void timeCopySignD_strict(int reps) {
+    public double timeCopySignD_strict(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            StrictMath.copySign(d, d);
+            result = StrictMath.copySign(d, d);
         }
+        return result;
     }
 
-    public void timeCopySignF_strict(int reps) {
+    public float timeCopySignF_strict(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            StrictMath.copySign(f, f);
+            result = StrictMath.copySign(f, f);
         }
+        return result;
     }
 
-    public void timeCos(int reps) {
+    public double timeCos(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.cos(d);
+            result = Math.cos(d);
         }
+        return result;
     }
 
-    public void timeCosh(int reps) {
+    public double timeCosh(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.cosh(d);
+            result = Math.cosh(d);
         }
+        return result;
     }
 
-    public void timeExp(int reps) {
+    public double timeExp(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.exp(d);
+            result = Math.exp(d);
         }
+        return result;
     }
 
-    public void timeExpm1(int reps) {
+    public double timeExpm1(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.expm1(d);
+            result = Math.expm1(d);
         }
+        return result;
     }
 
-    public void timeFloor(int reps) {
+    public double timeFloor(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.floor(d);
+            result = Math.floor(d);
         }
+        return result;
     }
 
-    public void timeGetExponentD(int reps) {
+    public int timeGetExponentD(int reps) {
+        int result = i;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.getExponent(d);
+            result = Math.getExponent(d);
         }
+        return result;
     }
 
-    public void timeGetExponentF(int reps) {
+    public int timeGetExponentF(int reps) {
+        int result = i;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.getExponent(f);
+            result = Math.getExponent(f);
         }
+        return result;
     }
 
-    public void timeHypot(int reps) {
+    public double timeHypot(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.hypot(d, d);
+            result = Math.hypot(d, d);
         }
+        return result;
     }
 
-    public void timeIEEEremainder(int reps) {
+    public double timeIEEEremainder(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.IEEEremainder(d, d);
+            result = Math.IEEEremainder(d, d);
         }
+        return result;
     }
 
-    public void timeLog(int reps) {
+    public double timeLog(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.log(d);
+            result = Math.log(d);
         }
+        return result;
     }
 
-    public void timeLog10(int reps) {
+    public double timeLog10(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.log10(d);
+            result = Math.log10(d);
         }
+        return result;
     }
 
-    public void timeLog1p(int reps) {
+    public double timeLog1p(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.log1p(d);
+            result = Math.log1p(d);
         }
+        return result;
     }
 
-    public void timeMaxD(int reps) {
+    public double timeMaxD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.max(d, d);
+            result = Math.max(d, d);
         }
+        return result;
     }
 
-    public void timeMaxF(int reps) {
+    public float timeMaxF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.max(f, f);
+            result = Math.max(f, f);
         }
+        return result;
     }
 
-    public void timeMaxI(int reps) {
+    public int timeMaxI(int reps) {
+        int result = i;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.max(i, i);
+            result = Math.max(i, i);
         }
+        return result;
     }
 
-    public void timeMaxL(int reps) {
+    public long timeMaxL(int reps) {
+        long result = l;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.max(l, l);
+            result = Math.max(l, l);
         }
+        return result;
     }
 
-    public void timeMinD(int reps) {
+    public double timeMinD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.min(d, d);
+            result = Math.min(d, d);
         }
+        return result;
     }
 
-    public void timeMinF(int reps) {
+    public float timeMinF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.min(f, f);
+            result = Math.min(f, f);
         }
+        return result;
     }
 
-    public void timeMinI(int reps) {
+    public int timeMinI(int reps) {
+        int result = i;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.min(i, i);
+            result = Math.min(i, i);
         }
+        return result;
     }
 
-    public void timeMinL(int reps) {
+    public long timeMinL(int reps) {
+        long result = l;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.min(l, l);
+            result = Math.min(l, l);
         }
+        return result;
     }
 
-    public void timeNextAfterD(int reps) {
+    public double timeNextAfterD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.nextAfter(d, d);
+            result = Math.nextAfter(d, d);
         }
+        return result;
     }
 
-    public void timeNextAfterF(int reps) {
+    public float timeNextAfterF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.nextAfter(f, f);
+            result = Math.nextAfter(f, f);
         }
+        return result;
     }
 
-    public void timeNextUpD(int reps) {
+    public double timeNextUpD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.nextUp(d);
+            result = Math.nextUp(d);
         }
+        return result;
     }
 
-    public void timeNextUpF(int reps) {
+    public float timeNextUpF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.nextUp(f);
+            result = Math.nextUp(f);
         }
+        return result;
     }
 
-    public void timePow(int reps) {
+    public double timePow(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.pow(d, d);
+            result = Math.pow(d, d);
         }
+        return result;
     }
 
-    public void timeRandom(int reps) {
+    public double timeRandom(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.random();
+            result = Math.random();
         }
+        return result;
     }
 
-    public void timeRint(int reps) {
+    public double timeRint(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.rint(d);
+            result = Math.rint(d);
         }
+        return result;
     }
 
-    public void timeRoundD(int reps) {
+    public long timeRoundD(int reps) {
+        long result = l;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.round(d);
+            result = Math.round(d);
         }
+        return result;
     }
 
-    public void timeRoundF(int reps) {
+    public int timeRoundF(int reps) {
+        int result = i;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.round(f);
+            result = Math.round(f);
         }
+        return result;
     }
 
-    public void timeScalbD(int reps) {
+    public double timeScalbD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.scalb(d, 5);
+            result = Math.scalb(d, 5);
         }
+        return result;
     }
 
-    public void timeScalbF(int reps) {
+    public float timeScalbF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.scalb(f, 5);
+            result = Math.scalb(f, 5);
         }
+        return result;
     }
 
-    public void timeSignumD(int reps) {
+    public double timeSignumD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.signum(d);
+            result = Math.signum(d);
         }
+        return result;
     }
 
-    public void timeSignumF(int reps) {
+    public float timeSignumF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.signum(f);
+            result = Math.signum(f);
         }
+        return result;
     }
 
-    public void timeSin(int reps) {
+    public double timeSin(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.sin(d);
+            result = Math.sin(d);
         }
+        return result;
     }
 
-    public void timeSinh(int reps) {
+    public double timeSinh(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.sinh(d);
+            result = Math.sinh(d);
         }
+        return result;
     }
 
-    public void timeSqrt(int reps) {
+    public double timeSqrt(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.sqrt(d);
+            result = Math.sqrt(d);
         }
+        return result;
     }
 
-    public void timeTan(int reps) {
+    public double timeTan(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.tan(d);
+            result = Math.tan(d);
         }
+        return result;
     }
 
-    public void timeTanh(int reps) {
+    public double timeTanh(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.tanh(d);
+            result = Math.tanh(d);
         }
+        return result;
     }
 
-    public void timeToDegrees(int reps) {
+    public double timeToDegrees(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.toDegrees(d);
+            result = Math.toDegrees(d);
         }
+        return result;
     }
 
-    public void timeToRadians(int reps) {
+    public double timeToRadians(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.toRadians(d);
+            result = Math.toRadians(d);
         }
+        return result;
     }
 
-    public void timeUlpD(int reps) {
+    public double timeUlpD(int reps) {
+        double result = d;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.ulp(d);
+            result = Math.ulp(d);
         }
+        return result;
     }
 
-    public void timeUlpF(int reps) {
+    public float timeUlpF(int reps) {
+        float result = f;
         for (int rep = 0; rep < reps; ++rep) {
-            Math.ulp(f);
+            result = Math.ulp(f);
         }
+        return result;
     }
 }
diff --git a/benchmarks/src/benchmarks/regression/SSLSocketFactoryBenchmark.java b/benchmarks/src/benchmarks/regression/SSLSocketFactoryBenchmark.java
new file mode 100644
index 0000000..d0448d6
--- /dev/null
+++ b/benchmarks/src/benchmarks/regression/SSLSocketFactoryBenchmark.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package benchmarks.regression;
+
+import com.google.caliper.Param;
+import com.google.caliper.SimpleBenchmark;
+import javax.net.ssl.SSLSocketFactory;
+
+public class SSLSocketFactoryBenchmark extends SimpleBenchmark {
+    public void time(int reps) throws Exception {
+        for (int i = 0; i < reps; ++i) {
+            SSLSocketFactory.getDefault();
+        }
+    }
+}
diff --git a/dalvik/src/main/java/dalvik/system/DexFile.java b/dalvik/src/main/java/dalvik/system/DexFile.java
index 5a9c01a..8c78312 100644
--- a/dalvik/src/main/java/dalvik/system/DexFile.java
+++ b/dalvik/src/main/java/dalvik/system/DexFile.java
@@ -281,21 +281,15 @@
         }
     }
 
-    /*
-     * Open a DEX file.  The value returned is a magic VM cookie.  On
-     * failure, an IOException is thrown.
-     */
-    private static long openDexFile(String sourceName, String outputName, int flags) throws IOException {
-        return openDexFileNative(new File(sourceName).getCanonicalPath(),
-                                 (outputName == null) ? null : new File(outputName).getCanonicalPath(),
-                                 flags);
-    }
-
     private static native void closeDexFile(long cookie);
     private static native Class defineClassNative(String name, ClassLoader loader, long cookie)
             throws ClassNotFoundException, NoClassDefFoundError;
     private static native String[] getClassNameList(long cookie);
-    private static native long openDexFileNative(String sourceName, String outputName, int flags);
+    /*
+     * Open a DEX file.  The value returned is a magic VM cookie.  On
+     * failure, an IOException is thrown.
+     */
+    private static native long openDexFile(String sourceName, String outputName, int flags);
 
     /**
      * Returns true if the VM believes that the apk/jar file is out of date
diff --git a/dex/src/main/java/com/android/dex/DexException.java b/dex/src/main/java/com/android/dex/DexException.java
index a30a46f..ee0af18 100644
--- a/dex/src/main/java/com/android/dex/DexException.java
+++ b/dex/src/main/java/com/android/dex/DexException.java
@@ -22,7 +22,7 @@
  * Thrown when there's a format problem reading, writing, or generally
  * processing a dex file.
  */
-public final class DexException extends ExceptionWithContext {
+public class DexException extends ExceptionWithContext {
     public DexException(String message) {
         super(message);
     }
diff --git a/dex/src/main/java/com/android/dex/DexIndexOverflowException.java b/dex/src/main/java/com/android/dex/DexIndexOverflowException.java
new file mode 100644
index 0000000..3226207
--- /dev/null
+++ b/dex/src/main/java/com/android/dex/DexIndexOverflowException.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dex;
+
+/**
+ * Thrown when there's an index overflow writing a dex file.
+ */
+public final class DexIndexOverflowException extends DexException {
+    public DexIndexOverflowException(String message) {
+        super(message);
+    }
+
+    public DexIndexOverflowException(Throwable cause) {
+        super(cause);
+    }
+}
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/internal/net/www/protocol/file/FileURLConnectionTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/internal/net/www/protocol/file/FileURLConnectionTest.java
index 1f4ad1f..d6f2c01 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/internal/net/www/protocol/file/FileURLConnectionTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/internal/net/www/protocol/file/FileURLConnectionTest.java
@@ -112,8 +112,6 @@
         assertEquals(conn.getContentType(), conn.getHeaderField("content-type"));
         assertEquals(Integer.toString(conn.getContentLength()),
                 conn.getHeaderField("content-length"));
-        assertEquals(Long.toString(conn.getContentLengthLong()),
-                conn.getHeaderField("content-length"));
         assertEquals(conn.getHeaderField(0), conn.getHeaderField("content-type"));
         assertEquals(conn.getHeaderField(1), conn.getHeaderField("content-length"));
         assertEquals(conn.getHeaderField(2), conn.getHeaderField("last-modified"));
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/io/ConsoleTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/io/ConsoleTest.java
index ec423e9..99becf9 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/io/ConsoleTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/io/ConsoleTest.java
@@ -95,12 +95,6 @@
         assertEquals("2 Please input a line of string to test:", prompt);
     }
 
-    public void test_readPassword_LString_LObject() {
-        console.readPassword("%d", 3);
-        String prompt = new String(((ByteArrayOutputStream) out).toByteArray());
-        assertEquals("3\n", prompt);
-    }
-
     /**
      * {@link java.io.Console#writer()}
      */
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/net/HttpCookieTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/net/HttpCookieTest.java
index 306e697..d1cf18f 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/net/HttpCookieTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/net/HttpCookieTest.java
@@ -234,16 +234,6 @@
         assertFalse(cookie.getSecure());
     }
 
-    public void test_Is_SetHttpOnly() {
-        HttpCookie cookie = new HttpCookie("testName", "value");
-        assertFalse(cookie.isHttpOnly());
-
-        cookie.setHttpOnly(true);
-        assertTrue(cookie.isHttpOnly());
-        cookie.setHttpOnly(false);
-        assertFalse(cookie.isHttpOnly());
-    }
-
     /**
      * java.net.HttpCookie#getPath(), setPath(String)
      * @since 1.6
@@ -817,24 +807,20 @@
         // Default is !httpOnly.
         List<HttpCookie> list = HttpCookie.parse("Set-Cookie: SID=31d4d96e407aad42");
         HttpCookie cookie = list.get(0);
-        assertFalse(cookie.isHttpOnly());
 
         // Well formed, simple.
         list = HttpCookie.parse("Set-Cookie: SID=31d4d96e407aad42; HttpOnly");
         cookie = list.get(0);
-        assertTrue(cookie.isHttpOnly());
 
         // Well formed, other attributes present.
         list = HttpCookie.parse("Set-Cookie: SID=31d4d96e407aad42; Path=/; Secure; HttpOnly");
         cookie = list.get(0);
-        assertTrue(cookie.isHttpOnly());
         assertTrue(cookie.getSecure());
         assertEquals("/", cookie.getPath());
 
         // Mangled spacing, casing and attributes that have an (ignored) value.
         list = HttpCookie.parse("Set-Cookie:SID=31d4d96e407aad42;Path=/;secure=false;httponly=false");
         cookie = list.get(0);
-        assertTrue(cookie.isHttpOnly());
         assertTrue(cookie.getSecure());
         assertEquals("/", cookie.getPath());
     }
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java
index 731e907..4469e01 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/DatagramChannelTest.java
@@ -25,7 +25,6 @@
 import java.net.SocketAddress;
 import java.net.SocketException;
 import java.nio.ByteBuffer;
-import java.nio.channels.AlreadyBoundException;
 import java.nio.channels.AsynchronousCloseException;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.DatagramChannel;
@@ -72,11 +71,11 @@
         channel1 = DatagramChannel.open();
         channel2 = DatagramChannel.open();
 
-        channel1.bind(new InetSocketAddress(Inet6Address.LOOPBACK, 0));
-        channel2.bind(new InetSocketAddress(Inet6Address.LOOPBACK, 0));
+        channel1.socket().bind(new InetSocketAddress(Inet6Address.LOOPBACK, 0));
+        channel2.socket().bind(new InetSocketAddress(Inet6Address.LOOPBACK, 0));
 
-        channel1Address = (InetSocketAddress) channel1.getLocalAddress();
-        channel2Address = (InetSocketAddress) channel2.getLocalAddress();
+        channel1Address = (InetSocketAddress) channel1.socket().getLocalSocketAddress();
+        channel2Address = (InetSocketAddress) channel2.socket().getLocalSocketAddress();
 
         this.datagramSocket1 = new DatagramSocket(0, Inet6Address.LOOPBACK);
         this.datagramSocket2 = new DatagramSocket(0, Inet6Address.LOOPBACK);
@@ -1943,7 +1942,7 @@
             sourceArray[i] = (byte) i;
         }
 
-        this.channel1.connect(channel1.getLocalAddress());
+        this.channel1.connect(channel1.socket().getLocalSocketAddress());
         this.channel2.connect(datagramSocket1Address); // the different addr
 
         // write
@@ -1973,7 +1972,7 @@
         assertEquals(CAPACITY_NORMAL, dc.write(sourceBuf));
 
         // Connect channel2 after data has been written.
-        channel2.connect(dc.getLocalAddress());
+        channel2.connect(dc.socket().getLocalSocketAddress());
 
         // read
         ByteBuffer targetBuf = ByteBuffer.wrap(targetArray);
@@ -2165,7 +2164,7 @@
         assertEquals(CAPACITY_NORMAL, dc.write(sourceBuf));
 
         // Connect channel2 after data has been written.
-        channel2.connect(dc.getLocalAddress());
+        channel2.connect(dc.socket().getLocalSocketAddress());
 
         // read
         ByteBuffer targetBuf = ByteBuffer.wrap(targetArray);
@@ -2383,8 +2382,8 @@
     public void test_bounded_harmony6493() throws IOException {
         DatagramChannel server = DatagramChannel.open();
         InetSocketAddress addr = new InetSocketAddress("localhost", 0);
-        server.bind(addr);
-        SocketAddress boundedAddress = server.getLocalAddress();
+        server.socket().bind(addr);
+        SocketAddress boundedAddress = server.socket().getLocalSocketAddress();
 
         DatagramChannel client = DatagramChannel.open();
         ByteBuffer sent = ByteBuffer.allocate(1024);
@@ -2400,11 +2399,11 @@
     public void test_bind_null() throws Exception {
         DatagramChannel dc = DatagramChannel.open();
         try {
-            assertNull(dc.getLocalAddress());
+            assertNull(dc.socket().getLocalSocketAddress());
 
-            dc.bind(null);
+            dc.socket().bind(null);
 
-            InetSocketAddress localAddress = (InetSocketAddress) dc.getLocalAddress();
+            InetSocketAddress localAddress = (InetSocketAddress) dc.socket().getLocalSocketAddress();
             assertTrue(localAddress.getAddress().isAnyLocalAddress());
             assertTrue(localAddress.getPort() > 0);
         } finally {
@@ -2416,7 +2415,7 @@
         DatagramChannel dc = DatagramChannel.open();
         try {
             // Bind to a local address that is in use
-            dc.bind(channel1Address);
+            dc.socket().bind(channel1Address);
             fail();
         } catch (IOException expected) {
         } finally {
@@ -2429,38 +2428,25 @@
         dc.close();
 
         try {
-            dc.bind(null);
+            dc.socket().bind(null);
             fail();
-        } catch (ClosedChannelException expected) {
-        } finally {
-            dc.close();
-        }
-    }
-
-    public void test_bind_twice() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        dc.bind(null);
-
-        try {
-            dc.bind(null);
-            fail();
-        } catch (AlreadyBoundException expected) {
+        } catch (IOException expected) {
         } finally {
             dc.close();
         }
     }
 
     public void test_bind_explicitPort() throws Exception {
-        InetSocketAddress address = (InetSocketAddress) channel1.getLocalAddress();
+        InetSocketAddress address = (InetSocketAddress) channel1.socket().getLocalSocketAddress();
         assertTrue(address.getPort() > 0);
 
         DatagramChannel dc = DatagramChannel.open();
         // Allow the socket to bind to a port we know is already in use.
         dc.socket().setReuseAddress(true);
         InetSocketAddress bindAddress = new InetSocketAddress("localhost", address.getPort());
-        dc.bind(bindAddress);
+        dc.socket().bind(bindAddress);
 
-        InetSocketAddress boundAddress = (InetSocketAddress) dc.getLocalAddress();
+        InetSocketAddress boundAddress = (InetSocketAddress) dc.socket().getLocalSocketAddress();
         assertEquals(bindAddress.getHostName(), boundAddress.getHostName());
         assertEquals(bindAddress.getPort(), boundAddress.getPort());
 
@@ -2471,16 +2457,16 @@
     /** Checks that the SocketChannel and associated Socket agree on the socket state. */
     public void test_bind_socketSync() throws IOException {
         DatagramChannel dc = DatagramChannel.open();
-        assertNull(dc.getLocalAddress());
+        assertNull(dc.socket().getLocalSocketAddress());
 
         DatagramSocket socket = dc.socket();
         assertNull(socket.getLocalSocketAddress());
         assertFalse(socket.isBound());
 
         InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-        dc.bind(bindAddr);
+        dc.socket().bind(bindAddr);
 
-        InetSocketAddress actualAddr = (InetSocketAddress) dc.getLocalAddress();
+        InetSocketAddress actualAddr = (InetSocketAddress) dc.socket().getLocalSocketAddress();
         assertEquals(actualAddr, socket.getLocalSocketAddress());
         assertEquals(bindAddr.getHostName(), actualAddr.getHostName());
         assertTrue(socket.isBound());
@@ -2499,14 +2485,14 @@
      */
     public void test_bind_socketSyncAfterBind() throws IOException {
         DatagramChannel dc = DatagramChannel.open();
-        assertNull(dc.getLocalAddress());
+        assertNull(dc.socket().getLocalSocketAddress());
 
         InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-        dc.bind(bindAddr);
+        dc.socket().bind(bindAddr);
 
         // Socket creation after bind().
         DatagramSocket socket = dc.socket();
-        InetSocketAddress actualAddr = (InetSocketAddress) dc.getLocalAddress();
+        InetSocketAddress actualAddr = (InetSocketAddress) dc.socket().getLocalSocketAddress();
         assertEquals(actualAddr, socket.getLocalSocketAddress());
         assertEquals(bindAddr.getHostName(), actualAddr.getHostName());
         assertTrue(socket.isBound());
@@ -2521,21 +2507,17 @@
 
     public void test_getLocalSocketAddress_afterClose() throws IOException {
         DatagramChannel dc = DatagramChannel.open();
-        assertNull(dc.getLocalAddress());
+        assertNull(dc.socket().getLocalSocketAddress());
 
         InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-        dc.bind(bindAddr);
+        dc.socket().bind(bindAddr);
 
-        assertNotNull(dc.getLocalAddress());
+        assertNotNull(dc.socket().getLocalSocketAddress());
 
         dc.close();
 
         assertFalse(dc.isOpen());
 
-        try {
-            dc.getLocalAddress();
-            fail();
-        } catch (ClosedChannelException expected) {
-        }
+        dc.socket().getLocalSocketAddress();
     }
 }
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/FileChannelTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/FileChannelTest.java
index ccf5a14..990badc 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/FileChannelTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/FileChannelTest.java
@@ -786,7 +786,6 @@
         // shared lock, but it works on Windows & Linux.
         assertTrue(fileLock.isShared());
         assertSame(readOnlyFileChannel, fileLock.channel());
-        assertSame(readOnlyFileChannel, fileLock.acquiredBy());
         assertEquals(POSITION, fileLock.position());
         assertEquals(SIZE, fileLock.size());
     }
@@ -801,7 +800,6 @@
         assertTrue(fileLock.isValid());
         assertFalse(fileLock.isShared());
         assertSame(writeOnlyFileChannel, fileLock.channel());
-        assertSame(writeOnlyFileChannel, fileLock.acquiredBy());
         assertEquals(POSITION, fileLock.position());
         assertEquals(SIZE, fileLock.size());
     }
@@ -818,7 +816,6 @@
         assertEquals(POSITION, fileLock.position());
         assertEquals(SIZE, fileLock.size());
         assertSame(readOnlyFileChannel, fileLock.channel());
-        assertSame(readOnlyFileChannel, fileLock.acquiredBy());
     }
 
     /**
@@ -997,7 +994,6 @@
         // shared lock, but it works on Windows & Linux.
         assertTrue(fileLock.isShared());
         assertSame(readOnlyFileChannel, fileLock.channel());
-        assertSame(readOnlyFileChannel, fileLock.acquiredBy());
         assertEquals(POSITION, fileLock.position());
         assertEquals(SIZE, fileLock.size());
     }
@@ -1012,7 +1008,6 @@
         assertTrue(fileLock.isValid());
         assertFalse(fileLock.isShared());
         assertSame(writeOnlyFileChannel, fileLock.channel());
-        assertSame(writeOnlyFileChannel, fileLock.acquiredBy());
         assertEquals(POSITION, fileLock.position());
         assertEquals(SIZE, fileLock.size());
     }
@@ -1029,7 +1024,6 @@
         assertEquals(POSITION, fileLock.position());
         assertEquals(SIZE, fileLock.size());
         assertSame(readOnlyFileChannel, fileLock.channel());
-        assertSame(readOnlyFileChannel, fileLock.acquiredBy());
     }
 
     /**
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/FileLockTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/FileLockTest.java
index c4d372b..7e3b671 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/FileLockTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/FileLockTest.java
@@ -75,7 +75,6 @@
 	public void test_Constructor_Ljava_nio_channels_FileChannelJJZ() {
 		FileLock fileLock1 = new MockFileLock(null, 0, 0, false);
 		assertNull(fileLock1.channel());
-		assertNull(fileLock1.acquiredBy());
 
 		try {
 			new MockFileLock(readWriteChannel, -1, 0, false);
@@ -108,15 +107,6 @@
 	}
 
 	/**
-	 * @tests java.nio.channels.FileLock#acquiredBy()
-	 */
-	public void test_acquiredBy() {
-		assertSame(readWriteChannel, mockLock.acquiredBy());
-		FileLock lock = new MockFileLock(null, 0, 10, true);
-		assertNull(lock.acquiredBy());
-	}
-
-	/**
 	 * @tests java.nio.channels.FileLock#position()
 	 */
 	public void test_position() {
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/ServerSocketChannelTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/ServerSocketChannelTest.java
index b417adc..be40d0b 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/ServerSocketChannelTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/ServerSocketChannelTest.java
@@ -24,7 +24,6 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.nio.ByteBuffer;
-import java.nio.channels.AlreadyBoundException;
 import java.nio.channels.AsynchronousCloseException;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.IllegalBlockingModeException;
@@ -115,11 +114,11 @@
     public void test_bind_null() throws Exception {
         ServerSocketChannel ssc = ServerSocketChannel.open();
         try {
-            assertNull(ssc.getLocalAddress());
+            assertNull(ssc.socket().getLocalSocketAddress());
 
-            ssc.bind(null);
+            ssc.socket().bind(null);
 
-            InetSocketAddress localAddress = (InetSocketAddress) ssc.getLocalAddress();
+            InetSocketAddress localAddress = (InetSocketAddress) ssc.socket().getLocalSocketAddress();
             assertTrue(localAddress.getAddress().isAnyLocalAddress());
             assertTrue(localAddress.getPort() > 0);
         } finally {
@@ -129,12 +128,12 @@
 
     public void test_bind_failure() throws Exception {
         ServerSocketChannel portHog = ServerSocketChannel.open();
-        portHog.bind(null);
+        portHog.socket().bind(null);
 
         ServerSocketChannel ssc = ServerSocketChannel.open();
         try {
             // Bind to a local address that is in use
-            ssc.bind(portHog.getLocalAddress());
+            ssc.socket().bind(portHog.socket().getLocalSocketAddress());
             fail();
         } catch (IOException expected) {
         } finally {
@@ -148,22 +147,9 @@
         ssc.close();
 
         try {
-            ssc.bind(null);
+            ssc.socket().bind(null);
             fail();
-        } catch (ClosedChannelException expected) {
-        } finally {
-            ssc.close();
-        }
-    }
-
-    public void test_bind_twice() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(null);
-
-        try {
-            ssc.bind(null);
-            fail();
-        } catch (AlreadyBoundException expected) {
+        } catch (IOException expected) {
         } finally {
             ssc.close();
         }
@@ -172,9 +158,9 @@
     public void test_bind_explicitPort() throws Exception {
         ServerSocketChannel portPickingChannel = ServerSocketChannel.open();
         // Have the OS find a free port.
-        portPickingChannel.bind(null);
+        portPickingChannel.socket().bind(null);
 
-        InetSocketAddress address = (InetSocketAddress) portPickingChannel.getLocalAddress();
+        InetSocketAddress address = (InetSocketAddress) portPickingChannel.socket().getLocalSocketAddress();
         assertTrue(address.getPort() > 0);
         portPickingChannel.close();
 
@@ -182,9 +168,9 @@
         // close() and bind().
         ServerSocketChannel ssc = ServerSocketChannel.open();
         InetSocketAddress bindAddress = new InetSocketAddress("localhost", address.getPort());
-        ssc.bind(bindAddress);
+        ssc.socket().bind(bindAddress);
 
-        InetSocketAddress boundAddress = (InetSocketAddress) ssc.getLocalAddress();
+        InetSocketAddress boundAddress = (InetSocketAddress) ssc.socket().getLocalSocketAddress();
         assertEquals(bindAddress.getHostName(), boundAddress.getHostName());
         assertEquals(bindAddress.getPort(), boundAddress.getPort());
 
@@ -193,16 +179,16 @@
 
     public void test_bind_socketSync() throws IOException {
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        assertNull(ssc.getLocalAddress());
+        assertNull(ssc.socket().getLocalSocketAddress());
 
         ServerSocket socket = ssc.socket();
         assertNull(socket.getLocalSocketAddress());
         assertFalse(socket.isBound());
 
         InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-        ssc.bind(bindAddr);
+        ssc.socket().bind(bindAddr);
 
-        InetSocketAddress actualAddr = (InetSocketAddress) ssc.getLocalAddress();
+        InetSocketAddress actualAddr = (InetSocketAddress) ssc.socket().getLocalSocketAddress();
         assertEquals(actualAddr, socket.getLocalSocketAddress());
         assertEquals(bindAddr.getHostName(), actualAddr.getHostName());
         assertTrue(socket.isBound());
@@ -216,14 +202,14 @@
 
     public void test_bind_socketSyncAfterBind() throws IOException {
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        assertNull(ssc.getLocalAddress());
+        assertNull(ssc.socket().getLocalSocketAddress());
 
         InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-        ssc.bind(bindAddr);
+        ssc.socket().bind(bindAddr);
 
         // Socket creation after bind().
         ServerSocket socket = ssc.socket();
-        InetSocketAddress actualAddr = (InetSocketAddress) ssc.getLocalAddress();
+        InetSocketAddress actualAddr = (InetSocketAddress) ssc.socket().getLocalSocketAddress();
         assertEquals(actualAddr, socket.getLocalSocketAddress());
         assertEquals(bindAddr.getHostName(), actualAddr.getHostName());
         assertTrue(socket.isBound());
@@ -241,22 +227,18 @@
 
     public void test_getLocalSocketAddress_afterClose() throws IOException {
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        assertNull(ssc.getLocalAddress());
+        assertNull(ssc.socket().getLocalSocketAddress());
 
         InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-        ssc.bind(bindAddr);
+        ssc.socket().bind(bindAddr);
 
-        assertNotNull(ssc.getLocalAddress());
+        assertNotNull(ssc.socket().getLocalSocketAddress());
 
         ssc.close();
 
         assertFalse(ssc.isOpen());
 
-        try {
-            ssc.getLocalAddress();
-            fail();
-        } catch (ClosedChannelException expected) {
-        }
+        ssc.socket().getLocalSocketAddress();
     }
 
     // -------------------------------------------------------------------
@@ -387,7 +369,7 @@
 
     public void testAccept_Block_NoConnect() throws IOException {
         assertTrue(this.serverChannel.isBlocking());
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         // blocking mode , will block and wait for ever...
         // so must close the server channel with another thread.
         new Thread() {
@@ -410,7 +392,7 @@
     }
 
     public void testAccept_NonBlock_NoConnect() throws IOException {
-        this.serverChannel.bind(null);
+        this.serverChannel.socket().bind(null);
         this.serverChannel.configureBlocking(false);
         // non-blocking mode , will immediately return
         assertNull(this.serverChannel.accept());
@@ -420,13 +402,13 @@
      * @tests ServerSocketChannel#accept().socket()
      */
     public void test_read_Blocking_RealData() throws IOException {
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         ByteBuffer buf = ByteBuffer.allocate(CAPACITY_NORMAL);
 
         for (int i = 0; i < CAPACITY_NORMAL; i++) {
             buf.put((byte) i);
         }
-        clientChannel.connect(serverChannel.getLocalAddress());
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         Socket serverSocket = serverChannel.accept().socket();
         InputStream in = serverSocket.getInputStream();
         buf.flip();
@@ -459,13 +441,13 @@
      */
     public void test_read_NonBlocking_RealData() throws Exception {
         serverChannel.configureBlocking(false);
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         ByteBuffer buf = ByteBuffer.allocate(CAPACITY_NORMAL);
         for (int i = 0; i < CAPACITY_NORMAL; i++) {
             buf.put((byte) i);
         }
         buf.flip();
-        clientChannel.connect(serverChannel.getLocalAddress());
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         Socket serverSocket = serverChannel.accept().socket();
         InputStream in = serverSocket.getInputStream();
         clientChannel.write(buf);
@@ -478,13 +460,13 @@
      */
     public void test_write_Blocking_RealData() throws IOException {
         assertTrue(serverChannel.isBlocking());
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
 
         byte[] writeContent = new byte[CAPACITY_NORMAL];
         for (int i = 0; i < writeContent.length; i++) {
             writeContent[i] = (byte) i;
         }
-        clientChannel.connect(serverChannel.getLocalAddress());
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         Socket socket = serverChannel.accept().socket();
         OutputStream out = socket.getOutputStream();
         out.write(writeContent);
@@ -499,13 +481,13 @@
      */
     public void test_write_NonBlocking_RealData() throws Exception {
         serverChannel.configureBlocking(false);
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
 
         byte[] writeContent = new byte[CAPACITY_NORMAL];
         for (int i = 0; i < CAPACITY_NORMAL; i++) {
             writeContent[i] = (byte) i;
         }
-        clientChannel.connect(serverChannel.getLocalAddress());
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         Socket clientSocket = serverChannel.accept().socket();
         OutputStream out = clientSocket.getOutputStream();
         out.write(writeContent);
@@ -519,13 +501,13 @@
      */
     public void test_read_LByteBuffer_Blocking_ReadWriteRealLargeData()
             throws IOException, InterruptedException {
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         ByteBuffer buf = ByteBuffer.allocate(CAPACITY_64KB);
         for (int i = 0; i < CAPACITY_64KB; i++) {
             buf.put((byte) i);
         }
         buf.flip();
-        clientChannel.connect(serverChannel.getLocalAddress());
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         WriteChannelThread writeThread = new WriteChannelThread(clientChannel, buf);
         writeThread.start();
         Socket socket = serverChannel.accept().socket();
@@ -564,13 +546,13 @@
     public void test_read_LByteBuffer_NonBlocking_ReadWriteRealLargeData()
             throws Exception {
         serverChannel.configureBlocking(false);
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         ByteBuffer buf = ByteBuffer.allocate(CAPACITY_64KB);
         for (int i = 0; i < CAPACITY_64KB; i++) {
             buf.put((byte) i);
         }
         buf.flip();
-        clientChannel.connect(serverChannel.getLocalAddress());
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         WriteChannelThread writeThread = new WriteChannelThread(clientChannel, buf);
         writeThread.start();
         Socket socket = serverChannel.accept().socket();
@@ -589,12 +571,12 @@
     public void test_write_LByteBuffer_NonBlocking_ReadWriteRealLargeData()
             throws Exception {
         serverChannel.configureBlocking(false);
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         byte[] writeContent = new byte[CAPACITY_64KB];
         for (int i = 0; i < writeContent.length; i++) {
             writeContent[i] = (byte) i;
         }
-        clientChannel.connect(serverChannel.getLocalAddress());
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         Socket socket = serverChannel.accept().socket();
         WriteSocketThread writeThread = new WriteSocketThread(socket, writeContent);
         writeThread.start();
@@ -632,12 +614,12 @@
      */
     public void test_write_LByteBuffer_Blocking_ReadWriteRealLargeData()
             throws Exception {
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         byte[] writeContent = new byte[CAPACITY_64KB];
         for (int i = 0; i < writeContent.length; i++) {
             writeContent[i] = (byte) i;
         }
-        clientChannel.connect(serverChannel.getLocalAddress());
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         Socket socket = serverChannel.accept().socket();
         WriteSocketThread writeThread = new WriteSocketThread(socket, writeContent);
         writeThread.start();
@@ -675,20 +657,35 @@
      * @tests ServerSocketChannel#socket().getSoTimeout()
      */
     public void test_accept_SOTIMEOUT() throws IOException {
-        // regression test for Harmony-707
-        final int SO_TIMEOUT = 10;
+        // Regression test for Harmony-707
+        // The timeout actually used may be different from the one set due to
+        // rounding by the Linux Kernel (see sock_set_timeout() in net/core/sock.c).
+        // getSoTimeout() can return a different value from the one set with
+        // setSoTimeout(). Consequently we do not check for equality with what was
+        // set.
+
         ServerSocketChannel sc = ServerSocketChannel.open();
         try {
-            sc.bind(null);
+            sc.socket().bind(null);
+
+            // Non blocking mode, accept() will return NULL since there are no pending connections.
             sc.configureBlocking(false);
+
             ServerSocket ss = sc.socket();
+
+            int defaultTimeout = ss.getSoTimeout();
+            assertEquals(0, defaultTimeout);
+            // The timeout value is unimportant, providing it is large enough to be accepted
+            // by the Kernel as distinct from the default.
+            final int SO_TIMEOUT = 200;
             ss.setSoTimeout(SO_TIMEOUT);
+            int nonDefaultTimeout = ss.getSoTimeout();
+            assertTrue(nonDefaultTimeout != defaultTimeout);
+
             SocketChannel client = sc.accept();
-            // non blocking mode, returns null since there are no pending connections.
             assertNull(client);
-            int soTimeout = ss.getSoTimeout();
-            // Harmony fails here.
-            assertEquals(SO_TIMEOUT, soTimeout);
+            // Confirm the timeout was unchanged.
+            assertEquals(nonDefaultTimeout, ss.getSoTimeout());
         } finally {
             sc.close();
         }
@@ -740,7 +737,7 @@
     public void test_socket_accept_Nonblocking_Bound() throws IOException {
         // regression test for Harmony-748
         serverChannel.configureBlocking(false);
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         ServerSocket gotSocket = serverChannel.socket();
         try {
             gotSocket.accept();
@@ -761,7 +758,7 @@
     public void test_socket_accept_Blocking_Bound() throws IOException {
         // regression test for Harmony-748
         serverChannel.configureBlocking(true);
-        serverChannel.bind(null);
+        serverChannel.socket().bind(null);
         serverChannel.close();
         try {
             serverChannel.socket().accept();
@@ -773,8 +770,8 @@
      * Regression test for HARMONY-4961
      */
     public void test_socket_getLocalPort() throws IOException {
-        serverChannel.bind(null);
-        clientChannel.connect(serverChannel.getLocalAddress());
+        serverChannel.socket().bind(null);
+        clientChannel.connect(serverChannel.socket().getLocalSocketAddress());
         SocketChannel myChannel = serverChannel.accept();
         int port = myChannel.socket().getLocalPort();
         assertEquals(serverChannel.socket().getLocalPort(), port);
@@ -788,7 +785,7 @@
      */
     public void test_accept_configureBlocking() throws Exception {
         InetSocketAddress localAddr = new InetSocketAddress("localhost", 0);
-        serverChannel.bind(localAddr);
+        serverChannel.socket().bind(localAddr);
 
         // configure the channel non-blocking
         // when it is accepting in main thread
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/SocketChannelTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/SocketChannelTest.java
index 52dff79..51a8cff 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/SocketChannelTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/nio/channels/SocketChannelTest.java
@@ -30,7 +30,6 @@
 import java.net.SocketException;
 import java.nio.Buffer;
 import java.nio.ByteBuffer;
-import java.nio.channels.AlreadyBoundException;
 import java.nio.channels.AlreadyConnectedException;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.ConnectionPendingException;
@@ -155,21 +154,21 @@
     }
 
     public void testBind_Null() throws Exception {
-        assertNull(channel1.getLocalAddress());
+        assertNull(channel1.socket().getLocalSocketAddress());
 
-        channel1.bind(null);
+        channel1.socket().bind(null);
 
-        InetSocketAddress localAddress = (InetSocketAddress) channel1.getLocalAddress();
+        InetSocketAddress localAddress = (InetSocketAddress) channel1.socket().getLocalSocketAddress();
         assertTrue(localAddress.getAddress().isAnyLocalAddress());
         assertTrue(localAddress.getPort() > 0);
     }
 
     public void testBind_Failure() throws Exception {
-        assertNull(channel1.getLocalAddress());
+        assertNull(channel1.socket().getLocalSocketAddress());
 
         try {
             // Bind to a local address that is in use
-            channel1.bind(localAddr1);
+            channel1.socket().bind(localAddr1);
             fail();
         } catch (IOException expected) {
         }
@@ -179,27 +178,17 @@
         channel1.close();
 
         try {
-            channel1.bind(null);
+            channel1.socket().bind(null);
             fail();
-        } catch (ClosedChannelException expected) {
-        }
-    }
-
-    public void testBind_Twice() throws Exception {
-        channel1.bind(null);
-
-        try {
-            channel1.bind(null);
-            fail();
-        } catch (AlreadyBoundException expected) {
+        } catch (IOException expected) {
         }
     }
 
     public void testBind_explicitPort() throws Exception {
         ServerSocketChannel portPickingChannel = ServerSocketChannel.open();
         // Have the OS find a free port.
-        portPickingChannel.bind(null);
-        InetSocketAddress address = (InetSocketAddress) portPickingChannel.getLocalAddress();
+        portPickingChannel.socket().bind(null);
+        InetSocketAddress address = (InetSocketAddress) portPickingChannel.socket().getLocalSocketAddress();
         assertTrue(address.getPort() > 0);
         portPickingChannel.close();
 
@@ -208,31 +197,27 @@
         InetSocketAddress bindAddress = new InetSocketAddress("localhost", address.getPort());
         // Allow the socket to bind to a port we know is already in use.
         channel1.socket().setReuseAddress(true);
-        channel1.bind(bindAddress);
+        channel1.socket().bind(bindAddress);
 
-        InetSocketAddress boundAddress = (InetSocketAddress) channel1.getLocalAddress();
+        InetSocketAddress boundAddress = (InetSocketAddress) channel1.socket().getLocalSocketAddress();
         assertEquals(bindAddress.getHostName(), boundAddress.getHostName());
         assertEquals(bindAddress.getPort(), boundAddress.getPort());
     }
 
     public void test_getLocalSocketAddress_afterClose() throws IOException {
         SocketChannel sc = SocketChannel.open();
-        assertNull(sc.getLocalAddress());
+        assertNull(sc.socket().getLocalSocketAddress());
 
         InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-        sc.bind(bindAddr);
+        sc.socket().bind(bindAddr);
 
-        assertNotNull(sc.getLocalAddress());
+        assertNotNull(sc.socket().getLocalSocketAddress());
 
         sc.close();
 
         assertFalse(sc.isOpen());
 
-        try {
-            sc.getLocalAddress();
-            fail();
-        } catch (ClosedChannelException expected) {
-        }
+        sc.socket().getLocalSocketAddress();
     }
 
     /*
@@ -479,11 +464,10 @@
 
     public void testSocket_getLocalAddress() throws Exception {
         Socket socket = channel1.socket();
-        assertNotNull(socket.getLocalAddress());
 
         channel1.connect(localAddr1);
 
-        assertNotNull(socket.getLocalAddress());
+        assertNotNull(socket.getLocalSocketAddress());
     }
 
     public void testSocket_getLocalSocketAddress() throws Exception {
@@ -1882,7 +1866,7 @@
         ServerSocket serversocket = theServerChannel.socket();
         serversocket.setReuseAddress(true);
         // Bind the socket
-        theServerChannel.bind(address);
+        theServerChannel.socket().bind(address);
 
         boolean doneNonBlockingConnect = false;
         // Loop so that we make sure we're definitely testing finishConnect()
@@ -2203,7 +2187,7 @@
         ByteBuffer buffer = ByteBuffer.allocateDirect(128);
 
         ServerSocketChannel server = ServerSocketChannel.open();
-        server.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0), 5);
+        server.socket().bind(new InetSocketAddress(InetAddress.getLocalHost(), 0), 5);
         Socket client = new Socket(InetAddress.getLocalHost(), server.socket()
                 .getLocalPort());
         client.setTcpNoDelay(false);
@@ -2821,9 +2805,9 @@
      */
     public void test_writev() throws Exception {
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(null);
+        ssc.socket().bind(null);
         SocketChannel sc = SocketChannel.open();
-        sc.connect(ssc.getLocalAddress());
+        sc.connect(ssc.socket().getLocalSocketAddress());
         SocketChannel sock = ssc.accept();
         ByteBuffer[] buf = { ByteBuffer.allocate(10), ByteBuffer.allocateDirect(20) };
 
@@ -2848,10 +2832,10 @@
     public void test_writev2() throws Exception {
         ServerSocketChannel ssc = ServerSocketChannel.open();
         ssc.configureBlocking(false);
-        ssc.bind(null);
+        ssc.socket().bind(null);
         SocketChannel sc = SocketChannel.open();
         sc.configureBlocking(false);
-        boolean connected = sc.connect(ssc.getLocalAddress());
+        boolean connected = sc.connect(ssc.socket().getLocalSocketAddress());
         SocketChannel sock = ssc.accept();
         if (!connected) {
             sc.finishConnect();
@@ -2886,10 +2870,10 @@
     public void test_write$NonBlockingException() throws Exception {
         ServerSocketChannel ssc = ServerSocketChannel.open();
         ssc.configureBlocking(false);
-        ssc.bind(null);
+        ssc.socket().bind(null);
         SocketChannel sc = SocketChannel.open();
         sc.configureBlocking(false);
-        boolean connected = sc.connect(ssc.getLocalAddress());
+        boolean connected = sc.connect(ssc.socket().getLocalSocketAddress());
         SocketChannel sock = ssc.accept();
         if (!connected) {
             sc.finishConnect();
@@ -2922,9 +2906,9 @@
     public void test_write$LByteBuffer2() throws IOException {
         // Set-up
         ServerSocketChannel server = ServerSocketChannel.open();
-        server.bind(null);
+        server.socket().bind(null);
         SocketChannel client = SocketChannel.open();
-        client.connect(server.getLocalAddress());
+        client.connect(server.socket().getLocalSocketAddress());
         SocketChannel worker = server.accept();
 
         // Test overlapping buffers
@@ -2954,9 +2938,9 @@
     public void test_write$LByteBuffer_buffers() throws IOException {
         // Set-up
         ServerSocketChannel server = ServerSocketChannel.open();
-        server.bind(null);
+        server.socket().bind(null);
         SocketChannel client = SocketChannel.open();
-        client.connect(server.getLocalAddress());
+        client.connect(server.socket().getLocalSocketAddress());
         SocketChannel worker = server.accept();
 
         // A variety of buffer types to write
@@ -2996,9 +2980,9 @@
     public void test_write$LByteBuffer_writes() throws IOException {
         // Set-up
         ServerSocketChannel server = ServerSocketChannel.open();
-        server.bind(null);
+        server.socket().bind(null);
         SocketChannel client = SocketChannel.open();
-        client.connect(server.getLocalAddress());
+        client.connect(server.socket().getLocalSocketAddress());
         SocketChannel worker = server.accept();
 
         // Data to write
@@ -3038,10 +3022,10 @@
     public void test_write$LByteBuffer_invalid() throws IOException {
         // Set-up
         ServerSocketChannel server = ServerSocketChannel.open();
-        server.bind(null);
+        server.socket().bind(null);
 
         SocketChannel client = SocketChannel.open();
-        client.connect(server.getLocalAddress());
+        client.connect(server.socket().getLocalSocketAddress());
 
         SocketChannel worker = server.accept();
 
@@ -3141,9 +3125,9 @@
             throws Exception {
         // regression 1 for HARMONY-549
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(null);
+        ssc.socket().bind(null);
         SocketChannel sc = SocketChannel.open();
-        sc.connect(ssc.getLocalAddress());
+        sc.connect(ssc.socket().getLocalSocketAddress());
         ssc.accept().close();
         ByteBuffer[] buf = { ByteBuffer.allocate(10) };
         assertEquals(-1, sc.read(buf, 0, 1));
@@ -3157,9 +3141,9 @@
     public void test_socketChannel_write_ByteBufferII() throws Exception {
         // regression 2 for HARMONY-549
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(null);
+        ssc.socket().bind(null);
         SocketChannel sc = SocketChannel.open();
-        sc.connect(ssc.getLocalAddress());
+        sc.connect(ssc.socket().getLocalSocketAddress());
         SocketChannel sock = ssc.accept();
         ByteBuffer[] buf = { ByteBuffer.allocate(10), null };
         try {
@@ -3179,9 +3163,9 @@
     public void test_socketChannel_read_ByteBufferII_bufNULL() throws Exception {
         // regression 3 for HARMONY-549
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(null);
+        ssc.socket().bind(null);
         SocketChannel sc = SocketChannel.open();
-        sc.connect(ssc.getLocalAddress());
+        sc.connect(ssc.socket().getLocalSocketAddress());
         ssc.accept();
         ByteBuffer[] buf = new ByteBuffer[2];
         buf[0] = ByteBuffer.allocate(1);
@@ -3201,9 +3185,9 @@
     public void test_socketChannel_write_close() throws Exception {
         // regression 4 for HARMONY-549
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(null);
+        ssc.socket().bind(null);
         SocketChannel sc = SocketChannel.open();
-        sc.connect(ssc.getLocalAddress());
+        sc.connect(ssc.socket().getLocalSocketAddress());
         SocketChannel sock = ssc.accept();
         ByteBuffer buf = null;
         ssc.close();
@@ -3226,9 +3210,9 @@
         ByteBuffer readBuf = ByteBuffer.allocate(11);
         ByteBuffer buf = ByteBuffer.wrap(testStr.getBytes());
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(null);
+        ssc.socket().bind(null);
         SocketChannel sc = SocketChannel.open();
-        sc.connect(ssc.getLocalAddress());
+        sc.connect(ssc.socket().getLocalSocketAddress());
         buf.position(2);
         ssc.accept().write(buf);
         assertEquals(9, sc.read(readBuf));
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollationElementIteratorTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollationElementIteratorTest.java
index 0ca489c..081b446 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollationElementIteratorTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/CollationElementIteratorTest.java
@@ -125,7 +125,8 @@
 
   public void testGetMaxExpansion() {
     String text = "cha";
-    RuleBasedCollator rbColl = (RuleBasedCollator) Collator.getInstance(new Locale("es", "", "TRADITIONAL"));
+    RuleBasedCollator rbColl = (RuleBasedCollator) Collator.getInstance(
+            Locale.forLanguageTag("es-u-co-trad"));
     CollationElementIterator iterator = rbColl.getCollationElementIterator(text);
     int order = iterator.next();
     while (order != CollationElementIterator.NULLORDER) {
@@ -177,7 +178,8 @@
   }
 
   public void testSetOffset() {
-    RuleBasedCollator rbColl = (RuleBasedCollator) Collator.getInstance(new Locale("es", "", "TRADITIONAL"));
+    RuleBasedCollator rbColl = (RuleBasedCollator) Collator.getInstance(
+            Locale.forLanguageTag("es-u-co-trad"));
     String text = "cha";
     CollationElementIterator iterator = rbColl.getCollationElementIterator(text);
     iterator.setOffset(0);
@@ -189,7 +191,8 @@
   }
 
   public void testSetTextString() {
-    RuleBasedCollator rbColl = (RuleBasedCollator) Collator.getInstance(new Locale("es", "", "TRADITIONAL"));
+    RuleBasedCollator rbColl = (RuleBasedCollator) Collator.getInstance(
+            Locale.forLanguageTag("es-u-co-trad"));
     String text = "caa";
     CollationElementIterator iterator = rbColl.getCollationElementIterator(text);
     iterator.setOffset(0);
@@ -208,7 +211,8 @@
   }
 
   public void testSetTextCharacterIterator() {
-    RuleBasedCollator rbColl = (RuleBasedCollator) Collator.getInstance(new Locale("es", "", "TRADITIONAL"));
+    RuleBasedCollator rbColl = (RuleBasedCollator) Collator.getInstance(
+            Locale.forLanguageTag("es-u-co-trad"));
     String text = "caa";
     CollationElementIterator iterator = rbColl.getCollationElementIterator(text);
     iterator.setOffset(1);
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatSymbolsTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatSymbolsTest.java
index 9fe3681..1a6a25e 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatSymbolsTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatSymbolsTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.harmony.tests.java.text;
 
-import java.io.File;
-import java.net.URL;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
@@ -25,7 +23,6 @@
 import java.text.DateFormatSymbols;
 import java.util.Arrays;
 import java.util.Locale;
-import java.util.ServiceConfigurationError;
 
 public class DateFormatSymbolsTest extends junit.framework.TestCase {
 
@@ -88,7 +85,7 @@
 
         Locale locale = new Locale("not exist language", "not exist country");
         DateFormatSymbols symbols = DateFormatSymbols.getInstance(locale);
-        assertNotNull(symbols);
+        assertEquals(DateFormatSymbols.getInstance(Locale.ROOT), symbols);
     }
 
     /**
@@ -402,13 +399,6 @@
         dfs = new DateFormatSymbols(new Locale("en", "us"));
     }
 
-    /**
-     * Tears down the fixture, for example, close a network connection. This
-     * method is called after a test is executed.
-     */
-    protected void tearDown() {
-    }
-
     // Test serialization mechanism of DateFormatSymbols
     public void test_serialization() throws Exception {
         DateFormatSymbols symbols = new DateFormatSymbols(Locale.FRANCE);
@@ -426,7 +416,6 @@
         DateFormatSymbols symbolsD = (DateFormatSymbols) objectIStream
                 .readObject();
 
-        // The associated currency will not persist
         String[][] zoneStringsD = symbolsD.getZoneStrings();
         assertNotNull(zoneStringsD);
         assertEquals(symbols, symbolsD);
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/RuleBasedCollatorTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/RuleBasedCollatorTest.java
index f5a8057..906857b 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/RuleBasedCollatorTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/RuleBasedCollatorTest.java
@@ -105,7 +105,7 @@
 
   public void testGetCollationElementIteratorString() throws Exception {
     {
-      Locale locale = new Locale("es", "", "TRADITIONAL");
+      Locale locale = Locale.forLanguageTag("es-u-co-trad");
       RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(locale);
       String source = "cha";
       CollationElementIterator iterator = coll.getCollationElementIterator(source);
@@ -147,7 +147,7 @@
 
   public void testGetCollationElementIteratorCharacterIterator() throws Exception {
     {
-      Locale locale = new Locale("es", "", "TRADITIONAL");
+      Locale locale = Locale.forLanguageTag("es-u-co-trad");
       RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(locale);
       String text = "cha";
       StringCharacterIterator source = new StringCharacterIterator(text);
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/CollectionsTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/CollectionsTest.java
index ed25241..a1629d2 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/CollectionsTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/CollectionsTest.java
@@ -23,8 +23,9 @@
 import tests.support.Support_ListTest;
 import tests.support.Support_SetTest;
 import tests.support.Support_UnmodifiableCollectionTest;
-import tests.support.Support_UnmodifiableMapTest;
+
 import java.io.Serializable;
+import java.lang.reflect.Array;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayDeque;
@@ -38,6 +39,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
@@ -67,7 +69,7 @@
 
     private HashMap hm;
 
-    private Object[] objArray;
+    private Integer[] objArray;
 
     private Object[] myobjArray;
 
@@ -125,10 +127,10 @@
             colSize = c.size();
             normalCountingList = new ArrayList(colSize);
             offsetCountingList = new ArrayList(colSize);
-            for (int counter = 0; counter < colSize; counter++)
-                normalCountingList.add(new Integer(counter));
-            for (int counter = 0; counter < colSize; counter++)
-                offsetCountingList.add(new Integer(counter + colSize));
+            for (int i = 0; i < colSize; i++)
+                normalCountingList.add(new Integer(i));
+            for (int i = 0; i < colSize; i++)
+                offsetCountingList.add(new Integer(i + colSize));
             col.clear();
             if (offset)
                 col.addAll(offsetCountingList);
@@ -208,12 +210,12 @@
             mapSize = m.size();
             normalCountingMap = new HashMap(mapSize);
             offsetCountingMap = new HashMap(mapSize);
-            for (int counter = 0; counter < mapSize; counter++) {
-                myInt = new Integer(counter);
+            for (int i = 0; i < mapSize; i++) {
+                myInt = new Integer(i);
                 normalCountingMap.put(myInt, myInt);
             }
-            for (int counter = 0; counter < mapSize; counter++) {
-                myInt = new Integer(counter + mapSize);
+            for (int i = 0; i < mapSize; i++) {
+                myInt = new Integer(i + mapSize);
                 offsetCountingMap.put(myInt, myInt);
             }
             map.clear();
@@ -241,21 +243,6 @@
         }
     }
 
-    public static class CollectionTest extends junit.framework.TestCase {
-
-        Collection col; // must contain the Integers 0 to 99
-
-        public CollectionTest(String p1) {
-            super(p1);
-        }
-
-        public CollectionTest(String p1, Collection c) {
-            super(p1);
-            col = c;
-        }
-
-    }
-
     static class MyInt {
         int data;
 
@@ -268,10 +255,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#binarySearch(java.util.List,
-     *        java.lang.Object)
-     */
     public void test_binarySearchLjava_util_ListLjava_lang_Object() {
         // Test for method int
         // java.util.Collections.binarySearch(java.util.List, java.lang.Object)
@@ -284,17 +267,13 @@
         } catch (NullPointerException e) {
             //Expected
         }
-        for (int counter = 0; counter < llSize; counter++) {
+        for (int i = 0; i < llSize; i++) {
             assertEquals("Returned incorrect binary search item position", ll
-                    .get(counter), ll.get(Collections.binarySearch(ll, ll
-                    .get(counter))));
+                    .get(i), ll.get(Collections.binarySearch(ll, ll
+                    .get(i))));
         }
     }
 
-    /**
-     * java.util.Collections#binarySearch(java.util.List,
-     *        java.lang.Object, java.util.Comparator)
-     */
     public void test_binarySearchLjava_util_ListLjava_lang_ObjectLjava_util_Comparator() {
         // Test for method int
         // java.util.Collections.binarySearch(java.util.List, java.lang.Object,
@@ -310,12 +289,12 @@
         } catch (NullPointerException e) {
             //Expected
         }
-        for (int counter = 0; counter < rSize; counter++) {
+        for (int i = 0; i < rSize; i++) {
             assertEquals(
                     "Returned incorrect binary search item position using custom comparator",
-                    myReversedLinkedList.get(counter), myReversedLinkedList
+                    myReversedLinkedList.get(i), myReversedLinkedList
                     .get(Collections.binarySearch(myReversedLinkedList,
-                            myReversedLinkedList.get(counter), comp)));
+                            myReversedLinkedList.get(i), comp)));
         }
     }
 
@@ -327,9 +306,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#copy(java.util.List, java.util.List)
-     */
     public void test_copyLjava_util_ListLjava_util_List() {
         // Test for method void java.util.Collections.copy(java.util.List,
         // java.util.List)
@@ -355,9 +331,9 @@
         al.add(extraElement);
         al.add(extraElement2);
         Collections.copy(al, ll);
-        for (int counter = 0; counter < llSize; counter++) {
+        for (int i = 0; i < llSize; i++) {
             assertEquals("Elements do not match after copying collection", ll
-                    .get(counter), al.get(counter));
+                    .get(i), al.get(i));
         }
         assertTrue("Elements after copied elements affected by copy",
                 extraElement == al.get(llSize)
@@ -399,9 +375,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#copy(java.util.List, java.util.List)
-     */
     public void test_copy_check_index() {
         ArrayList a1 = new ArrayList();
         a1.add("one");
@@ -420,9 +393,6 @@
         assertEquals("aa", a2.get(0));
     }
 
-    /**
-     * java.util.Collections#enumeration(java.util.Collection)
-     */
     public void test_enumerationLjava_util_Collection() {
         // Test for method java.util.Enumeration
         // java.util.Collections.enumeration(java.util.Collection)
@@ -438,9 +408,6 @@
                 count);
     }
 
-    /**
-     * java.util.Collections#fill(java.util.List, java.lang.Object)
-     */
     public void test_fillLjava_util_ListLjava_lang_Object() {
         // Test for method void java.util.Collections.fill(java.util.List,
         // java.lang.Object)
@@ -476,9 +443,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#max(java.util.Collection)
-     */
     public void test_maxLjava_util_Collection() {
         // Test for method java.lang.Object
         // java.util.Collections.max(java.util.Collection)
@@ -507,10 +471,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#max(java.util.Collection,
-     *        java.util.Comparator)
-     */
     public void test_maxLjava_util_CollectionLjava_util_Comparator() {
         // Test for method java.lang.Object
         // java.util.Collections.max(java.util.Collection, java.util.Comparator)
@@ -523,9 +483,6 @@
                 myobjArray[0]);
     }
 
-    /**
-     * java.util.Collections#min(java.util.Collection)
-     */
     public void test_minLjava_util_Collection() {
         // Test for method java.lang.Object
         // java.util.Collections.min(java.util.Collection)
@@ -534,10 +491,6 @@
                 objArray[0]);
     }
 
-    /**
-     * java.util.Collections#min(java.util.Collection,
-     *        java.util.Comparator)
-     */
     public void test_minLjava_util_CollectionLjava_util_Comparator() {
         // Test for method java.lang.Object
         // java.util.Collections.min(java.util.Collection, java.util.Comparator)
@@ -550,16 +503,13 @@
                 myobjArray[objArray.length - 1]);
     }
 
-    /**
-     * java.util.Collections#nCopies(int, java.lang.Object)
-     */
     public void test_nCopiesILjava_lang_Object() {
         // Test for method java.util.List java.util.Collections.nCopies(int,
         // java.lang.Object)
         Object o = new Object();
         List l = Collections.nCopies(100, o);
-        Iterator i = l.iterator();
-        Object first = i.next();
+        Iterator iterator = l.iterator();
+        Object first = iterator.next();
         assertEquals("Returned list consists of copies not refs", first, o);
         assertEquals("Returned list of incorrect size", 100, l.size());
         assertTrue("Contains", l.contains(o));
@@ -569,10 +519,10 @@
         assertTrue("null nCopies contains null", Collections.nCopies(2, null)
                 .contains(null));
         l = Collections.nCopies(20, null);
-        i = l.iterator();
-        for (int counter = 0; i.hasNext(); counter++) {
-            assertTrue("List is too large", counter < 20);
-            assertNull("Element should be null: " + counter, i.next());
+        iterator = l.iterator();
+        for (int i = 0; iterator.hasNext(); i++) {
+            assertTrue("List is too large", i < 20);
+            assertNull("Element should be null: " + i, iterator.next());
         }
         try {
             l.add(o);
@@ -588,9 +538,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#reverse(java.util.List)
-     */
     public void test_reverseLjava_util_List() {
         // Test for method void java.util.Collections.reverse(java.util.List)
         try {
@@ -617,9 +564,6 @@
                 + myList.get(1), myList.get(1));
     }
 
-    /**
-     * java.util.Collections#reverseOrder()
-     */
     public void test_reverseOrder() {
         // Test for method java.util.Comparator
         // java.util.Collections.reverseOrder()
@@ -628,14 +572,11 @@
         LinkedList list2 = new LinkedList(ll);
         Collections.sort(list2, comp);
         final int llSize = ll.size();
-        for (int counter = 0; counter < llSize; counter++)
+        for (int i = 0; i < llSize; i++)
             assertEquals("New comparator does not reverse sorting order", list2
-                    .get(llSize - counter - 1), ll.get(counter));
+                    .get(llSize - i - 1), ll.get(i));
     }
 
-    /**
-     * java.util.Collections#shuffle(java.util.List)
-     */
     public void test_shuffleLjava_util_List() {
         // Test for method void java.util.Collections.shuffle(java.util.List)
         // Assumes ll is sorted and has no duplicate keys and is large ( > 20
@@ -682,15 +623,15 @@
         else
             Collections.shuffle(list, new Random(200));
 
-        for (int counter = 0; counter < size - 1; counter++) {
-            if (((Integer) list.get(counter)).compareTo((Integer) list.get(counter + 1)) > 0) {
+        for (int i = 0; i < size - 1; i++) {
+            if (((Integer) list.get(i)).compareTo((Integer) list.get(i + 1)) > 0) {
                 sorted = false;
             }
         }
         assertFalse("Shuffling sorted " + type
                 + " list resulted in sorted list (should be unlikely)", sorted);
-        for (int counter = 0; counter < 20; counter++) {
-            index = 30031 * counter % (size + 1); // 30031 is a large prime
+        for (int i = 0; i < 20; i++) {
+            index = 30031 * i % (size + 1); // 30031 is a large prime
             if (list.get(index) != ll.get(index))
                 allMatch = false;
         }
@@ -698,9 +639,6 @@
                 + " list", allMatch);
     }
 
-    /**
-     * java.util.Collections#shuffle(java.util.List, java.util.Random)
-     */
     public void test_shuffleLjava_util_ListLjava_util_Random() {
         // Test for method void java.util.Collections.shuffle(java.util.List,
         // java.util.Random)
@@ -731,9 +669,6 @@
         assertEquals("acb", l.get(0).toString() + l.get(1) + l.get(2));
     }
 
-    /**
-     * java.util.Collections#singleton(java.lang.Object)
-     */
     public void test_singletonLjava_lang_Object() {
         // Test for method java.util.Set
         // java.util.Collections.singleton(java.lang.Object)
@@ -754,9 +689,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#sort(java.util.List)
-     */
     public void test_sortLjava_util_List() {
         // Test for method void java.util.Collections.sort(java.util.List)
         // assumes no duplicate keys in ll
@@ -771,22 +703,19 @@
         Collections.shuffle(ll);
         Collections.sort(ll);
         Collections.sort(reversedLinkedList);
-        for (int counter = 0; counter < llSize - 1; counter++) {
+        for (int i = 0; i < llSize - 1; i++) {
             assertTrue(
                     "Sorting shuffled list resulted in unsorted list",
-                    ((Integer) ll.get(counter)).compareTo((Integer) ll.get(counter + 1)) < 0);
+                    ((Integer) ll.get(i)).compareTo((Integer) ll.get(i + 1)) < 0);
         }
 
-        for (int counter = 0; counter < rllSize - 1; counter++) {
+        for (int i = 0; i < rllSize - 1; i++) {
             assertTrue("Sorting reversed list resulted in unsorted list",
-                    ((Integer) reversedLinkedList.get(counter))
-                            .compareTo((Integer) reversedLinkedList.get(counter + 1)) < 0);
+                    ((Integer) reversedLinkedList.get(i))
+                            .compareTo((Integer) reversedLinkedList.get(i + 1)) < 0);
         }
     }
 
-    /**
-     * java.util.Collections#sort(java.util.List, java.util.Comparator)
-     */
     public void test_sortLjava_util_ListLjava_util_Comparator() {
         // Test for method void java.util.Collections.sort(java.util.List,
         // java.util.Comparator)
@@ -801,11 +730,11 @@
         Collections.sort(myll, comp);
         final int llSize = myll.size();
 
-        for (int counter = 0; counter < llSize - 1; counter++) {
+        for (int i = 0; i < llSize - 1; i++) {
             assertTrue(
                     "Sorting shuffled list with custom comparator resulted in unsorted list",
-                    ((MyInt) myll.get(counter)).compareTo((MyInt) myll
-                            .get(counter + 1)) >= 0);
+                    ((MyInt) myll.get(i)).compareTo((MyInt) myll
+                            .get(i + 1)) >= 0);
         }
 
         ArrayList al = new ArrayList();
@@ -834,9 +763,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#swap(java.util.List, int, int)
-     */
     public void test_swapLjava_util_ListII() {
         // Test for method swap(java.util.List, int, int)
 
@@ -897,10 +823,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#replaceAll(java.util.List, java.lang.Object,
-     *        java.lang.Object)
-     */
     public void test_replaceAllLjava_util_ListLjava_lang_ObjectLjava_lang_Object() {
         // Test for method replaceAll(java.util.List, java.lang.Object,
         // java.lang.Object)
@@ -998,9 +920,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#rotate(java.util.List, int)
-     */
     public void test_rotateLjava_util_ListI() {
         // Test for method rotate(java.util.List, int)
 
@@ -1081,9 +1000,6 @@
         return buffer.toString();
     }
 
-    /**
-     * java.util.Collections#rotate(java.util.List, int)
-     */
     public void test_rotate2() {
         List list = new ArrayList();
         try {
@@ -1112,10 +1028,6 @@
                 (String) list.get(4));
     }
 
-    /**
-     * java.util.Collections#indexOfSubList(java.util.List,
-     *        java.util.List)
-     */
     public void test_indexOfSubListLjava_util_ListLjava_util_List() {
         // Test for method int indexOfSubList(java.util.List, java.util.List)
         List list = new ArrayList();
@@ -1146,10 +1058,6 @@
         testwithCharList(8, "", "SUBLIST", true);
     }
 
-    /**
-     * java.util.Collections#indexOfSubList(java.util.List,
-     *        java.util.List)
-     */
     public void test_indexOfSubList2() {
         ArrayList sub = new ArrayList();
         sub.add(new Integer(1));
@@ -1205,7 +1113,6 @@
                 .indexOfSubList(src, sub2));
     }
 
-
     private void testwithCharList(int count, String string1, String string2,
             boolean first) {
         char[] chars = string1.toCharArray();
@@ -1229,10 +1136,6 @@
                     sublist));
     }
 
-    /**
-     * java.util.Collections#lastIndexOfSubList(java.util.List,
-     *        java.util.List)
-     */
     public void test_lastIndexOfSubListLjava_util_ListLjava_util_List() {
         // Test for method int lastIndexOfSubList(java.util.List,
         // java.util.List)
@@ -1264,10 +1167,6 @@
         testwithCharList(8, "", "SUBLIST", false);
     }
 
-    /**
-     * java.util.Collections#lastIndexOfSubList(java.util.List,
-     *        java.util.List)
-     */
     public void test_lastIndexOfSubList2() {
         ArrayList sub = new ArrayList();
         sub.add(new Integer(1));
@@ -1337,9 +1236,6 @@
                 Collections.lastIndexOfSubList(src, sub2));
     }
 
-    /**
-     * java.util.Collections#list(java.util.Enumeration)
-     */
     public void test_listLjava_util_Enumeration() {
         // Test for method java.util.ArrayList list(java.util.Enumeration)
 
@@ -1355,9 +1251,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#synchronizedCollection(java.util.Collection)
-     */
     public void test_synchronizedCollectionLjava_util_Collection() {
         // Test for method java.util.Collection
         // java.util.Collections.synchronizedCollection(java.util.Collection)
@@ -1415,9 +1308,6 @@
         assertTrue("should contain self ref", synchCol.toString().indexOf("(this") > -1);
     }
 
-    /**
-     * java.util.Collections#synchronizedList(java.util.List)
-     */
     public void test_synchronizedListLjava_util_List() {
         try {
             Collections.synchronizedList(null);
@@ -1505,9 +1395,6 @@
                 synchList.get(25));
     }
 
-    /**
-     * java.util.Collections#synchronizedMap(java.util.Map)
-     */
     public void test_synchronizedMapLjava_util_Map() {
         // Test for method java.util.Map
         // java.util.Collections.synchronizedMap(java.util.Map)
@@ -1561,7 +1448,7 @@
             smallMap.put(objArray[i].toString(), objArray[i]);
         }
         synchMap = Collections.synchronizedMap(smallMap);
-        new Support_UnmodifiableMapTest("", synchMap).runTest();
+        new MapTestSupport(synchMap).runTest();
         synchMap.keySet().remove(objArray[50].toString());
         assertNull(
                 "Removing a key from the keySet of the synchronized map did not remove it from the synchronized map: ",
@@ -1571,9 +1458,17 @@
                 smallMap.get(objArray[50].toString()));
     }
 
-    /**
-     * java.util.Collections#synchronizedSet(java.util.Set)
-     */
+    public void test_unmodifiableMap_LinkedHashMap() {
+        // LinkedHashMap has a well defined iteration order and shows ordering issues with
+        // entrySet() / keySet() methods: iterator(), toArray(T[]) and toArray(). See bug 72073.
+        LinkedHashMap<String, Integer> smallMap = new LinkedHashMap<String, Integer>();
+        for (int i = 0; i < 100; i++) {
+            Integer object = objArray[i];
+            smallMap.put(object.toString(), object);
+        }
+        new MapTestSupport(smallMap).runTest();
+    }
+
     public void test_synchronizedSetLjava_util_Set() {
         // Test for method java.util.Set
         // java.util.Collections.synchronizedSet(java.util.Set)
@@ -1631,9 +1526,6 @@
         assertTrue("should contain self ref", mySet.toString().indexOf("(this") > -1);
     }
 
-    /**
-     * java.util.Collections#synchronizedSortedMap(java.util.SortedMap)
-     */
     public void test_synchronizedSortedMapLjava_util_SortedMap() {
         // Test for method java.util.SortedMap
         // java.util.Collections.synchronizedSortedMap(java.util.SortedMap)
@@ -1679,7 +1571,7 @@
             smallMap.put(objArray[i].toString(), objArray[i]);
         }
         synchMap = Collections.synchronizedSortedMap(smallMap);
-        new Support_UnmodifiableMapTest("", synchMap).runTest();
+        new MapTestSupport(synchMap).runTest();
         synchMap.keySet().remove(objArray[50].toString());
         assertNull(
                 "Removing a key from the keySet of the synchronized map did not remove it from the synchronized map",
@@ -1689,9 +1581,6 @@
                 smallMap.get(objArray[50].toString()));
     }
 
-    /**
-     * java.util.Collections#synchronizedSortedSet(java.util.SortedSet)
-     */
     public void test_synchronizedSortedSetLjava_util_SortedSet() {
         // Test for method java.util.SortedSet
         // java.util.Collections.synchronizedSortedSet(java.util.SortedSet)
@@ -1733,9 +1622,6 @@
         }
     }
 
-    /**
-     * java.util.Collections#unmodifiableCollection(java.util.Collection)
-     */
     public void test_unmodifiableCollectionLjava_util_Collection() {
         // Test for method java.util.Collection
         // java.util.Collections.unmodifiableCollection(java.util.Collection)
@@ -1743,9 +1629,9 @@
         Collection c = Collections.unmodifiableCollection(ll);
         assertTrue("Returned collection is of incorrect size", c.size() == ll
                 .size());
-        Iterator i = ll.iterator();
-        while (i.hasNext())
-            assertTrue("Returned list missing elements", c.contains(i.next()));
+        Iterator iterator = ll.iterator();
+        while (iterator.hasNext())
+            assertTrue("Returned list missing elements", c.contains(iterator.next()));
         try {
             c.add(new Object());
         } catch (UnsupportedOperationException e) {
@@ -1772,16 +1658,13 @@
                 .contains(new Integer(20)));
 
         myCollection = new ArrayList();
-        for (int counter = 0; counter < 100; counter++) {
-            myCollection.add(objArray[counter]);
+        for (int i = 0; i < 100; i++) {
+            myCollection.add(objArray[i]);
         }
         new Support_UnmodifiableCollectionTest("", Collections
                 .unmodifiableCollection(myCollection)).runTest();
     }
 
-    /**
-     * java.util.Collections#unmodifiableList(java.util.List)
-     */
     public void test_unmodifiableListLjava_util_List() {
         // Test for method java.util.List
         // java.util.Collections.unmodifiableList(java.util.List)
@@ -1801,9 +1684,9 @@
                 "Returned List should not implement Random Access interface",
                 !(c instanceof RandomAccess));
 
-        Iterator i = ll.iterator();
-        while (i.hasNext())
-            assertTrue("Returned list missing elements", c.contains(i.next()));
+        Iterator iterator = ll.iterator();
+        while (iterator.hasNext())
+            assertTrue("Returned list missing elements", c.contains(iterator.next()));
         try {
             c.add(new Object());
         } catch (UnsupportedOperationException e) {
@@ -1833,8 +1716,8 @@
                 c instanceof RandomAccess);
 
         smallList = new ArrayList();
-        for (int counter = 0; counter < 100; counter++) {
-            smallList.add(objArray[counter]);
+        for (int i = 0; i < 100; i++) {
+            smallList.add(objArray[i]);
         }
         List myList = Collections.unmodifiableList(smallList);
         assertTrue("List should not contain null", !myList.contains(null));
@@ -1845,25 +1728,22 @@
         assertTrue("get failed on unmodifiable list", myList.get(50).equals(
                 new Integer(50)));
         ListIterator listIterator = myList.listIterator();
-        for (int counter = 0; listIterator.hasNext(); counter++) {
+        for (int i = 0; listIterator.hasNext(); i++) {
             assertTrue("List has wrong elements", ((Integer) listIterator
-                    .next()).intValue() == counter);
+                    .next()).intValue() == i);
         }
         new Support_UnmodifiableCollectionTest("", smallList).runTest();
     }
 
-    /**
-     * java.util.Collections#unmodifiableMap(java.util.Map)
-     */
     public void test_unmodifiableMapLjava_util_Map() {
         // Test for method java.util.Map
         // java.util.Collections.unmodifiableMap(java.util.Map)
         boolean exception = false;
         Map c = Collections.unmodifiableMap(hm);
         assertTrue("Returned map is of incorrect size", c.size() == hm.size());
-        Iterator i = hm.keySet().iterator();
-        while (i.hasNext()) {
-            Object x = i.next();
+        Iterator iterator = hm.keySet().iterator();
+        while (iterator.hasNext()) {
+            Object x = iterator.next();
             assertTrue("Returned map missing elements", c.get(x).equals(
                     hm.get(x)));
         }
@@ -1885,8 +1765,8 @@
         assertTrue("Allowed modification of map", exception);
 
         exception = false;
-        Iterator it = c.entrySet().iterator();
-        Map.Entry entry = (Map.Entry) it.next();
+        Iterator entrySetIterator = c.entrySet().iterator();
+        Map.Entry entry = (Map.Entry) entrySetIterator.next();
         try {
             entry.setValue("modified");
         } catch (UnsupportedOperationException e) {
@@ -1927,26 +1807,21 @@
                 .equals(new Long(30)));
 
         smallMap = new HashMap();
-        for (int counter = 0; counter < 100; counter++) {
-            smallMap.put(objArray[counter].toString(), objArray[counter]);
+        for (int i = 0; i < 100; i++) {
+            smallMap.put(objArray[i].toString(), objArray[i]);
         }
-        unmodMap = Collections.unmodifiableMap(smallMap);
-        new Support_UnmodifiableMapTest("", unmodMap).runTest();
-
+        new MapTestSupport(smallMap).runTest();
     }
 
-    /**
-     * java.util.Collections#unmodifiableSet(java.util.Set)
-     */
     public void test_unmodifiableSetLjava_util_Set() {
         // Test for method java.util.Set
         // java.util.Collections.unmodifiableSet(java.util.Set)
         boolean exception = false;
         Set c = Collections.unmodifiableSet(s);
         assertTrue("Returned set is of incorrect size", c.size() == s.size());
-        Iterator i = ll.iterator();
-        while (i.hasNext())
-            assertTrue("Returned set missing elements", c.contains(i.next()));
+        Iterator iterator = ll.iterator();
+        while (iterator.hasNext())
+            assertTrue("Returned set missing elements", c.contains(iterator.next()));
         try {
             c.add(new Object());
         } catch (UnsupportedOperationException e) {
@@ -1969,16 +1844,13 @@
         assertTrue("Should contain null", mySet.contains(null));
 
         mySet = new TreeSet();
-        for (int counter = 0; counter < 100; counter++) {
-            mySet.add(objArray[counter]);
+        for (int i = 0; i < 100; i++) {
+            mySet.add(objArray[i]);
         }
         new Support_UnmodifiableCollectionTest("", Collections
                 .unmodifiableSet(mySet)).runTest();
     }
 
-    /**
-     * java.util.Collections#unmodifiableSortedMap(java.util.SortedMap)
-     */
     public void test_unmodifiableSortedMapLjava_util_SortedMap() {
         // Test for method java.util.SortedMap
         // java.util.Collections.unmodifiableSortedMap(java.util.SortedMap)
@@ -2012,9 +1884,6 @@
         fail("Allowed modification of map");
     }
 
-    /**
-     * java.util.Collections#unmodifiableSortedSet(java.util.SortedSet)
-     */
     public void test_unmodifiableSortedSetLjava_util_SortedSet() {
         // Test for method java.util.SortedSet
         // java.util.Collections.unmodifiableSortedSet(java.util.SortedSet)
@@ -2115,10 +1984,6 @@
         }
     }
 
-
-    /**
-     * java.util.Collections#checkType(Object, Class)
-     */
     public void test_checkType_Ljava_lang_Object_Ljava_lang_Class() throws Exception {
         Method m = Collections.class.getDeclaredMethod("checkType", Object.class, Class.class);
         m.setAccessible(true);
@@ -2257,9 +2122,6 @@
         SerializationTest.verifySelf(set);
     }
 
-    /**
-     * {@link java.util.Collections#asLifoQueue(Deque)
-     */
     public void test_asLifoQueue() throws Exception {
         Integer testInt[] = new Integer[100];
         Integer test101 = new Integer(101);
@@ -2300,7 +2162,6 @@
     @SuppressWarnings({ "unchecked", "boxing" })
     public void testSerializationSelf_asLifoQueue() throws Exception {
         Integer testInt[] = new Integer[100];
-        Integer test101 = new Integer(101);
         for (int i = 0; i < testInt.length; i++) {
             testInt[i] = new Integer(i);
         }
@@ -2320,23 +2181,18 @@
         });
     }
 
-    /**
-     * java.util.Collections#emptyList()
-     */
     public void test_emptyList() {
         List<String> list = Collections.emptyList();
         assertTrue("should be true", list.isEmpty());
     }
 
-    /**
-     * Sets up the fixture, for example, open a network connection. This method
-     * is called before a test is executed.
-     */
-    protected void setUp() {
-        objArray = new Object[1000];
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        objArray = new Integer[1000];
         myobjArray = new Object[1000];
         for (int i = 0; i < objArray.length; i++) {
-            objArray[i] = new Integer(i);
+            objArray[i] = i;
             myobjArray[i] = new MyInt(i);
         }
 
@@ -2360,23 +2216,170 @@
     }
 
     /**
-     * Tears down the fixture, for example, close a network connection. This
-     * method is called after a test is executed.
+     * A class shared by various Map-related tests that checks the properties and contents of a
+     * supplied Map and compares the some methods to the same map when wrapped with
+     * {@link Collections#unmodifiableMap(java.util.Map)}.
      */
-    protected void tearDown() {
-        objArray = null;
-        myobjArray = null;
+    static class MapTestSupport {
 
-        ll = null;
-        myll = null;
-        reversedLinkedList = null;
-        myReversedLinkedList = null;
-        s = null;
-        mys = null;
-        hm = null;
-    }
+        // must be a map containing the string keys "0"-"99" paired with the Integer
+        // values Integer(0) to Integer(99)
+        private final Map<String, Integer> modifiableMap;
+        private final Map<String, Integer> unmodifiableMap;
 
-    protected void doneSuite() {
-        objArray = null;
+        public MapTestSupport(Map<String, Integer> modifiableMap) {
+            this.modifiableMap = modifiableMap;
+            unmodifiableMap = Collections.unmodifiableMap(modifiableMap);
+        }
+
+        public void runTest() {
+            testContents(modifiableMap);
+            testContents(unmodifiableMap);
+
+            // values()
+            new Support_UnmodifiableCollectionTest("values() from map test", modifiableMap.values())
+                    .runTest();
+            new Support_UnmodifiableCollectionTest("values() from unmodifiable map test",
+                    unmodifiableMap.values()).runTest();
+
+            // entrySet()
+            testEntrySet(modifiableMap.entrySet(), unmodifiableMap.entrySet());
+
+            // keySet()
+            testKeySet(modifiableMap.keySet(), unmodifiableMap.keySet());
+        }
+
+        private static void testContents(Map<String, Integer> map) {
+            // size
+            assertTrue("Size should return 100, returned: " + map.size(), map.size() == 100);
+
+            // containsKey
+            assertTrue("Should contain the key \"0\"", map.containsKey("0"));
+            assertTrue("Should contain the key \"50\"", map.containsKey("50"));
+            assertTrue("Should not contain the key \"100\"", !map.containsKey("100"));
+
+            // containsValue
+            assertTrue("Should contain the value 0", map.containsValue(0));
+            assertTrue("Should contain the value 50", map.containsValue(50));
+            assertTrue("Should not contain value 100", !map.containsValue(100));
+
+            // get
+            assertTrue("getting \"0\" didn't return 0", map.get("0") == 0);
+            assertTrue("getting \"50\" didn't return 50", map.get("50") == 50);
+            assertNull("getting \"100\" didn't return null", map.get("100"));
+
+            // isEmpty
+            assertTrue("should have returned false to isEmpty", !map.isEmpty());
+        }
+
+        private static void testEntrySet(
+                Set<Map.Entry<String, Integer>> referenceEntrySet,
+                Set<Map.Entry<String, Integer>> entrySet) {
+            // entrySet should be a set of mappings {"0", 0}, {"1",1}... {"99", 99}
+            assertEquals(100, referenceEntrySet.size());
+            assertEquals(100, entrySet.size());
+
+            // The ordering may be undefined for a map implementation but the ordering must be the
+            // same across iterator(), toArray() and toArray(T[]) for a given map *and* the same for the
+            // modifiable and unmodifiable map.
+            crossCheckOrdering(referenceEntrySet, entrySet, Map.Entry.class);
+        }
+
+        private static void testKeySet(Set<String> referenceKeySet, Set<String> keySet) {
+            // keySet should be a set of the strings "0" to "99"
+            testKeySetContents(referenceKeySet);
+            testKeySetContents(keySet);
+
+            // The ordering may be undefined for a map implementation but the ordering must be the
+            // same across iterator(), toArray() and toArray(T[]) for a given map *and* the same for the
+            // modifiable and unmodifiable map.
+            crossCheckOrdering(referenceKeySet, keySet, String.class);
+        }
+
+        private static void testKeySetContents(Set<String> keySet) {
+            // contains
+            assertTrue("should contain \"0\"", keySet.contains("0"));
+            assertTrue("should contain \"50\"", keySet.contains("50"));
+            assertTrue("should not contain \"100\"", !keySet.contains("100"));
+
+            // containsAll
+            HashSet<String> hs = new HashSet<String>();
+            hs.add("0");
+            hs.add("25");
+            hs.add("99");
+            assertTrue("Should contain set of \"0\", \"25\", and \"99\"", keySet.containsAll(hs));
+            hs.add("100");
+            assertTrue("Should not contain set of \"0\", \"25\", \"99\" and \"100\"",
+                    !keySet.containsAll(hs));
+
+            // isEmpty
+            assertTrue("Should not be empty", !keySet.isEmpty());
+
+            // size
+            assertEquals("Returned wrong size.", 100, keySet.size());
+        }
+
+        private static <T> void crossCheckOrdering(Set<T> set1, Set<T> set2, Class<?> elementType) {
+            Iterator<T> set1Iterator = set1.iterator();
+            Iterator<T> set2Iterator = set2.iterator();
+
+            T[] zeroLengthArray = createArray(elementType, 0);
+            T[] set1TypedArray1 = set1.toArray(zeroLengthArray);
+            assertEquals(set1.size(), set1TypedArray1.length);
+
+            // Compare set1.iterator(), set2.iterator() and set1.toArray(new T[0])
+            int entryCount = 0;
+            while (set1Iterator.hasNext()) {
+                T set1Entry = set1Iterator.next();
+                T set2Entry = set2Iterator.next();
+
+                // Compare set1 with set2
+                assertEquals(set1Entry, set2Entry);
+
+                // Compare the iterator with the array. The arrays will be checked against each other.
+                assertEquals(set1Entry, set1TypedArray1[entryCount]);
+
+                entryCount++;
+            }
+            assertFalse(set2Iterator.hasNext());
+            assertEquals(set1.size(), entryCount);
+
+            // Compare the various arrays with each other.
+
+            // set1.toArray(new T[size])
+            T[] parameterArray1 = createArray(elementType, set1.size());
+            T[] set1TypedArray2 = set1.toArray(parameterArray1);
+            assertSame(set1TypedArray2, parameterArray1);
+            assertArrayEquals(set1TypedArray1, set1TypedArray2);
+
+            // set1.toArray()
+            Object[] set1UntypedArray = set1.toArray();
+            assertEquals(set1.size(), set1UntypedArray.length);
+            assertArrayEquals(set1TypedArray1, set1UntypedArray);
+
+            // set2.toArray(new T[0])
+            T[] set2TypedArray1 = set2.toArray(zeroLengthArray);
+            assertEquals(set1.size(), set2TypedArray1.length);
+            assertArrayEquals(set1TypedArray1, set2TypedArray1);
+
+            // set2.toArray(new T[size])
+            T[] parameterArray2 = createArray(elementType, set2.size());
+            T[] set2TypedArray2 = set1.toArray(parameterArray2);
+            assertSame(set2TypedArray2, parameterArray2);
+            assertArrayEquals(set1TypedArray1, set1TypedArray2);
+
+            // set2.toArray()
+            Object[] set2UntypedArray = set2.toArray();
+            assertArrayEquals(set1TypedArray1, set2UntypedArray);
+        }
+
+        private static <T> void assertArrayEquals(T[] array1, T[] array2) {
+            assertTrue(Arrays.equals(array1, array2));
+        }
+
+        @SuppressWarnings("unchecked")
+        private static <T> T[] createArray(Class<?> elementType, int size) {
+            return (T[]) Array.newInstance(elementType, size);
+        }
     }
 }
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/WeakHashMapTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/WeakHashMapTest.java
index 0d34f72..1d5294f 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/WeakHashMapTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/WeakHashMapTest.java
@@ -199,13 +199,18 @@
         values = null;
         keyArray[50] = null;
 
-        int count = 0;
+        FinalizationTester.induceFinalization();
+        long startTime = System.currentTimeMillis();
+        // We use a busy wait loop here since we can not know when the ReferenceQueue
+        // daemon will enqueue the cleared references on their internal reference
+        // queues. The current timeout is 5 seconds.
         do {
-            System.gc();
-            System.gc();
-            FinalizationTester.induceFinalization();
-            count++;
-        } while (count <= 5 && entrySet.size() == 100);
+            try {
+                Thread.sleep(100);
+            } catch (InterruptedException e) {
+            }
+        } while (entrySet.size() != 99 &&
+                 System.currentTimeMillis() - startTime < 5000);
 
         assertTrue(
                 "Incorrect number of entries returned after gc--wanted 99, got: "
diff --git a/libart/src/main/java/dalvik/system/VMRuntime.java b/libart/src/main/java/dalvik/system/VMRuntime.java
index 48b2dfa..a905c71 100644
--- a/libart/src/main/java/dalvik/system/VMRuntime.java
+++ b/libart/src/main/java/dalvik/system/VMRuntime.java
@@ -39,6 +39,7 @@
         ABI_TO_INSTRUCTION_SET_MAP.put("armeabi", "arm");
         ABI_TO_INSTRUCTION_SET_MAP.put("armeabi-v7a", "arm");
         ABI_TO_INSTRUCTION_SET_MAP.put("mips", "mips");
+        ABI_TO_INSTRUCTION_SET_MAP.put("mips64", "mips64");
         ABI_TO_INSTRUCTION_SET_MAP.put("x86", "x86");
         ABI_TO_INSTRUCTION_SET_MAP.put("x86_64", "x86_64");
         ABI_TO_INSTRUCTION_SET_MAP.put("arm64-v8a", "arm64");
@@ -325,4 +326,14 @@
 
         return instructionSet;
     }
+
+    public static boolean is64BitInstructionSet(String instructionSet) {
+        return "arm64".equals(instructionSet) ||
+                "x86_64".equals(instructionSet) ||
+                "mips64".equals(instructionSet);
+    }
+
+    public static boolean is64BitAbi(String abi) {
+        return is64BitInstructionSet(getInstructionSet(abi));
+    }
 }
diff --git a/libart/src/main/java/java/lang/Enum.java b/libart/src/main/java/java/lang/Enum.java
index e9545a1..ac5fc9a 100644
--- a/libart/src/main/java/java/lang/Enum.java
+++ b/libart/src/main/java/java/lang/Enum.java
@@ -149,7 +149,7 @@
      * @see java.lang.Comparable
      */
     public final int compareTo(E o) {
-        return ordinal - o.ordinal();
+        return ordinal - ((Enum<?>) o).ordinal;
     }
 
     /**
diff --git a/libart/src/main/java/java/lang/String.java b/libart/src/main/java/java/lang/String.java
index ab36752..0107b6e 100644
--- a/libart/src/main/java/java/lang/String.java
+++ b/libart/src/main/java/java/lang/String.java
@@ -31,23 +31,22 @@
 import libcore.util.EmptyArray;
 
 /**
- * An immutable sequence of characters/code units ({@code char}s). A
- * {@code String} is represented by array of UTF-16 values, such that
- * Unicode supplementary characters (code points) are stored/encoded as
- * surrogate pairs via Unicode code units ({@code char}).
+ * An immutable sequence of UTF-16 {@code char}s.
+ * See {@link Character} for details about the relationship between {@code char} and
+ * Unicode code points.
  *
  * <a name="backing_array"><h3>Backing Arrays</h3></a>
- * This class is implemented using a char[]. The length of the array may exceed
+ * This class is implemented using a {@code char[]}. The length of the array may exceed
  * the length of the string. For example, the string "Hello" may be backed by
  * the array {@code ['H', 'e', 'l', 'l', 'o', 'W'. 'o', 'r', 'l', 'd']} with
  * offset 0 and length 5.
  *
- * <p>Multiple strings can share the same char[] because strings are immutable.
+ * <p>Multiple strings can share the same {@code char[]} because strings are immutable.
  * The {@link #substring} method <strong>always</strong> returns a string that
  * shares the backing array of its source string. Generally this is an
- * optimization: fewer character arrays need to be allocated, and less copying
+ * optimization: fewer {@code char[]}s need to be allocated, and less copying
  * is necessary. But this can also lead to unwanted heap retention. Taking a
- * short substring of long string means that the long shared char[] won't be
+ * short substring of long string means that the long shared {@code char[]} won't be
  * garbage until both strings are garbage. This typically happens when parsing
  * small substrings out of a large input. To avoid this where necessary, call
  * {@code new String(longString.subString(...))}. The string copy constructor
@@ -64,23 +63,12 @@
 
     private static final char REPLACEMENT_CHAR = (char) 0xfffd;
 
-    /**
-     * CaseInsensitiveComparator compares Strings ignoring the case of the
-     * characters.
-     */
     private static final class CaseInsensitiveComparator implements
             Comparator<String>, Serializable {
         private static final long serialVersionUID = 8575799808933029326L;
 
         /**
-         * Compare the two objects to determine the relative ordering.
-         *
-         * @param o1
-         *            an Object to compare
-         * @param o2
-         *            an Object to compare
-         * @return an int < 0 if object1 is less than object2, 0 if they are
-         *         equal, and > 0 if object1 is greater
+         * See {@link java.lang.String#compareToIgnoreCase}.
          *
          * @exception ClassCastException
          *                if objects are not the correct type
@@ -91,7 +79,9 @@
     }
 
     /**
-     * A comparator ignoring the case of the characters.
+     * Compares strings using {@link #compareToIgnoreCase}.
+     * This is not suitable for case-insensitive string comparison for all locales.
+     * Use a {@link java.text.Collator} instead.
      */
     public static final Comparator<String> CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();
 
@@ -131,7 +121,7 @@
 
     /**
      * Converts the byte array to a string, setting the high byte of every
-     * character to the specified value.
+     * {@code char} to the specified value.
      *
      * @param data
      *            the byte array to convert to a string.
@@ -161,7 +151,7 @@
 
     /**
      * Converts the byte array to a string, setting the high byte of every
-     * character to {@code high}.
+     * {@code char} to {@code high}.
      *
      * @throws NullPointerException
      *             if {@code data == null}.
@@ -220,7 +210,7 @@
      * Converts the byte array to a string using the given charset.
      *
      * <p>The behavior when the bytes cannot be decoded by the given charset
-     * is to replace malformed input and unmappable characters with the charset's default
+     * is to replace malformed input and unmappable code points with the charset's default
      * replacement string. Use {@link java.nio.charset.CharsetDecoder} for more control.
      *
      * @throws IndexOutOfBoundsException
@@ -382,8 +372,8 @@
     }
 
     /**
-     * Initializes this string to contain the characters in the specified
-     * character array. Modifying the character array after creating the string
+     * Initializes this string to contain the given {@code char}s.
+     * Modifying the array after creating the string
      * has no effect on the string.
      *
      * @throws NullPointerException if {@code data == null}
@@ -393,8 +383,8 @@
     }
 
     /**
-     * Initializes this string to contain the specified characters in the
-     * character array. Modifying the character array after creating the string
+     * Initializes this string to contain the given {@code char}s.
+     * Modifying the array after creating the string
      * has no effect on the string.
      *
      * @throws NullPointerException
@@ -414,7 +404,7 @@
 
     /*
      * Internal version of the String(char[], int, int) constructor.
-     * Does not range check, null check, or copy the character array.
+     * Does not range check, null check, or copy the array.
      */
     String(int offset, int charCount, char[] chars) {
         this.value = chars;
@@ -423,8 +413,8 @@
     }
 
     /**
-     * Constructs a new string with the same sequence of characters as {@code
-     * toCopy}. The returned string's <a href="#backing_array">backing array</a>
+     * Constructs a copy of the given string.
+     * The returned string's <a href="#backing_array">backing array</a>
      * is no larger than necessary.
      */
     public String(String toCopy) {
@@ -496,7 +486,7 @@
     }
 
     /**
-     * Returns the character at {@code index}.
+     * Returns the {@code char} at {@code index}.
      * @throws IndexOutOfBoundsException if {@code index < 0} or {@code index >= length()}.
      */
     public char charAt(int index) {
@@ -533,44 +523,36 @@
     }
 
     /**
-     * Compares the specified string to this string using the Unicode values of
-     * the characters. Returns 0 if the strings contain the same characters in
-     * the same order. Returns a negative integer if the first non-equal
-     * character in this string has a Unicode value which is less than the
-     * Unicode value of the character at the same position in the specified
-     * string, or if this string is a prefix of the specified string. Returns a
-     * positive integer if the first non-equal character in this string has a
-     * Unicode value which is greater than the Unicode value of the character at
-     * the same position in the specified string, or if the specified string is
-     * a prefix of this string.
+     * Compares this string to the given string.
      *
-     * @param string
-     *            the string to compare.
-     * @return 0 if the strings are equal, a negative integer if this string is
-     *         before the specified string, or a positive integer if this string
-     *         is after the specified string.
+     * <p>The strings are compared one {@code char} at a time.
+     * In the discussion of the return value below, note that {@code char} does not
+     * mean code point, though this should only be visible for surrogate pairs.
+     *
+     * <p>If there is an index at which the two strings differ, the result is
+     * the difference between the two {@code char}s at the lowest such index.
+     * If not, but the lengths of the strings differ, the result is the difference
+     * between the two strings' lengths.
+     * If the strings are the same length and every {@code char} is the same, the result is 0.
+     *
      * @throws NullPointerException
      *             if {@code string} is {@code null}.
      */
     public native int compareTo(String string);
 
     /**
-     * Compares the specified string to this string using the Unicode values of
-     * the characters, ignoring case differences. Returns 0 if the strings
-     * contain the same characters in the same order. Returns a negative integer
-     * if the first non-equal character in this string has a Unicode value which
-     * is less than the Unicode value of the character at the same position in
-     * the specified string, or if this string is a prefix of the specified
-     * string. Returns a positive integer if the first non-equal character in
-     * this string has a Unicode value which is greater than the Unicode value
-     * of the character at the same position in the specified string, or if the
-     * specified string is a prefix of this string.
+     * Compares this string to the given string, ignoring case differences.
      *
-     * @param string
-     *            the string to compare.
-     * @return 0 if the strings are equal, a negative integer if this string is
-     *         before the specified string, or a positive integer if this string
-     *         is after the specified string.
+     * <p>The strings are compared one {@code char} at a time. This is not suitable
+     * for case-insensitive string comparison for all locales.
+     * Use a {@link java.text.Collator} instead.
+     *
+     * <p>If there is an index at which the two strings differ, the result is
+     * the difference between the two {@code char}s at the lowest such index.
+     * If not, but the lengths of the strings differ, the result is the difference
+     * between the two strings' lengths.
+     * If the strings are the same length and every {@code char} is the same, the result is 0.
+     *
      * @throws NullPointerException
      *             if {@code string} is {@code null}.
      */
@@ -611,13 +593,10 @@
     }
 
     /**
-     * Creates a new string containing the characters in the specified character
-     * array. Modifying the character array after creating the string has no
+     * Creates a new string by copying the given {@code char[]}.
+     * Modifying the array after creating the string has no
      * effect on the string.
      *
-     * @param data
-     *            the array of characters.
-     * @return the new string.
      * @throws NullPointerException
      *             if {@code data} is {@code null}.
      */
@@ -626,17 +605,10 @@
     }
 
     /**
-     * Creates a new string containing the specified characters in the character
-     * array. Modifying the character array after creating the string has no
+     * Creates a new string by copying the given subsequence of the given {@code char[]}.
+     * Modifying the array after creating the string has no
      * effect on the string.
-     *
-     * @param data
-     *            the array of characters.
-     * @param start
-     *            the starting offset in the character array.
-     * @param length
-     *            the number of characters to use.
-     * @return the new string.
+
      * @throws NullPointerException
      *             if {@code data} is {@code null}.
      * @throws IndexOutOfBoundsException
@@ -651,10 +623,6 @@
      * Compares the specified string to this string to determine if the
      * specified string is a suffix.
      *
-     * @param suffix
-     *            the suffix to look for.
-     * @return {@code true} if the specified string is a suffix of this string,
-     *         {@code false} otherwise.
      * @throws NullPointerException
      *             if {@code suffix} is {@code null}.
      */
@@ -663,15 +631,9 @@
     }
 
     /**
-     * Compares the specified object to this string and returns true if they are
-     * equal. The object must be an instance of string with the same characters
-     * in the same order.
-     *
-     * @param other
-     *            the object to compare.
-     * @return {@code true} if the specified object is equal to this string,
-     *         {@code false} otherwise.
-     * @see #hashCode
+     * Compares the given object to this string and returns true if they are
+     * equal. The object must be an instance of {@code String} with the same length,
+     * where for every index, {@code charAt} on each string returns the same value.
      */
     @Override public boolean equals(Object other) {
         if (other == this) {
@@ -710,13 +672,11 @@
     }
 
     /**
-     * Compares the specified string to this string ignoring the case of the
-     * characters and returns true if they are equal.
+     * Compares the given string to this string ignoring case.
      *
-     * @param string
-     *            the string to compare.
-     * @return {@code true} if the specified string is equal to this string,
-     *         {@code false} otherwise.
+     * <p>The strings are compared one {@code char} at a time. This is not suitable
+     * for case-insensitive string comparison for all locales.
+     * Use a {@link java.text.Collator} instead.
      */
     @FindBugsSuppressWarnings("ES_COMPARING_PARAMETER_STRING_WITH_EQ")
     public boolean equalsIgnoreCase(String string) {
@@ -740,17 +700,17 @@
     }
 
     /**
-     * Mangles this string into a byte array by stripping the high order bits from
-     * each character. Use {@link #getBytes()} or {@link #getBytes(String)} instead.
+     * Mangles a subsequence of this string into a byte array by stripping the high order bits from
+     * each {@code char}. Use {@link #getBytes()} or {@link #getBytes(String)} instead.
      *
      * @param start
-     *            the starting offset of characters to copy.
+     *            the start offset in this string.
      * @param end
-     *            the ending offset of characters to copy.
+     *            the end+1 offset in this string.
      * @param data
      *            the destination byte array.
      * @param index
-     *            the starting offset in the destination byte array.
+     *            the start offset in the destination byte array.
      * @throws NullPointerException
      *             if {@code data} is {@code null}.
      * @throws IndexOutOfBoundsException
@@ -760,7 +720,6 @@
      */
     @Deprecated
     public void getBytes(int start, int end, byte[] data, int index) {
-        // Note: last character not copied!
         if (start >= 0 && start <= end && end <= count) {
             end += offset;
             try {
@@ -776,7 +735,7 @@
     }
 
     /**
-     * Returns a new byte array containing the characters of this string encoded using the
+     * Returns a new byte array containing the code points in this string encoded using the
      * system's {@link java.nio.charset.Charset#defaultCharset default charset}.
      *
      * <p>The behavior when this string cannot be represented in the system's default charset
@@ -788,7 +747,7 @@
     }
 
     /**
-     * Returns a new byte array containing the characters of this string encoded using the
+     * Returns a new byte array containing the code points of this string encoded using the
      * named charset.
      *
      * <p>The behavior when this string cannot be represented in the named charset
@@ -801,11 +760,11 @@
     }
 
     /**
-     * Returns a new byte array containing the characters of this string encoded using the
+     * Returns a new byte array containing the code points of this string encoded using the
      * given charset.
      *
      * <p>The behavior when this string cannot be represented in the given charset
-     * is to replace malformed input and unmappable characters with the charset's default
+     * is to replace malformed input and unmappable code points with the charset's default
      * replacement byte array. Use {@link java.nio.charset.CharsetEncoder} for more control.
      *
      * @since 1.6
@@ -830,17 +789,17 @@
     }
 
     /**
-     * Copies the specified characters in this string to the character array
-     * starting at the specified offset in the character array.
+     * Copies the given subsequence of this string to the given array
+     * starting at the given offset.
      *
      * @param start
-     *            the starting offset of characters to copy.
+     *            the start offset in this string.
      * @param end
-     *            the ending offset of characters to copy.
+     *            the end+1 offset in this string.
      * @param buffer
-     *            the destination character array.
+     *            the destination array.
      * @param index
-     *            the starting offset in the character array.
+     *            the start offset in the destination array.
      * @throws NullPointerException
      *             if {@code buffer} is {@code null}.
      * @throws IndexOutOfBoundsException
@@ -849,7 +808,6 @@
      *             index}
      */
     public void getChars(int start, int end, char[] buffer, int index) {
-        // Note: last character not copied!
         if (start >= 0 && start <= end && end <= count) {
             System.arraycopy(value, start + offset, buffer, index, end - start);
         } else {
@@ -859,12 +817,11 @@
     }
 
     /**
-     * Version of getChars without bounds checks, for use by other classes
+     * getChars without bounds checks, for use by other classes
      * within the java.lang package only.  The caller is responsible for
      * ensuring that start >= 0 && start <= end && end <= count.
      */
     void _getChars(int start, int end, char[] buffer, int index) {
-        // NOTE last character not copied!
         System.arraycopy(value, start + offset, buffer, index, end - start);
     }
 
@@ -885,14 +842,9 @@
     }
 
     /**
-     * Searches in this string for the first index of the specified character.
-     * The search for the character starts at the beginning and moves towards
+     * Returns the first index of the given code point, or -1.
+     * The search starts at the beginning and moves towards
      * the end of this string.
-     *
-     * @param c
-     *            the character to find.
-     * @return the index in this string of the specified character, -1 if the
-     *         character isn't found.
      */
     public int indexOf(int c) {
         // TODO: just "return indexOf(c, 0);" when the JIT can inline that deep.
@@ -903,16 +855,9 @@
     }
 
     /**
-     * Searches in this string for the index of the specified character. The
-     * search for the character starts at the specified offset and moves towards
+     * Returns the next index of the given code point, or -1. The
+     * search starts at the given offset and moves towards
      * the end of this string.
-     *
-     * @param c
-     *            the character to find.
-     * @param start
-     *            the starting offset.
-     * @return the index in this string of the specified character, -1 if the
-     *         character isn't found.
      */
     public int indexOf(int c, int start) {
         if (c > 0xffff) {
@@ -933,14 +878,10 @@
     }
 
     /**
-     * Searches in this string for the first index of the specified string. The
-     * search for the string starts at the beginning and moves towards the end
+     * Returns the first index of the given string, or -1. The
+     * search starts at the beginning and moves towards the end
      * of this string.
      *
-     * @param string
-     *            the string to find.
-     * @return the index of the first character of the specified string in this
-     *         string, -1 if the specified string is not a substring.
      * @throws NullPointerException
      *             if {@code string} is {@code null}.
      */
@@ -976,16 +917,10 @@
     }
 
     /**
-     * Searches in this string for the index of the specified string. The search
-     * for the string starts at the specified offset and moves towards the end
+     * Returns the next index of the given string in this string, or -1. The search
+     * for the string starts at the given offset and moves towards the end
      * of this string.
      *
-     * @param subString
-     *            the string to find.
-     * @param start
-     *            the starting offset.
-     * @return the index of the first character of the specified string in this
-     *         string, -1 if the specified string is not a substring.
      * @throws NullPointerException
      *             if {@code subString} is {@code null}.
      */
@@ -1048,7 +983,7 @@
 
     /**
      * Returns the last index of the code point {@code c}, or -1.
-     * The search for the character starts at the end and moves towards the
+     * The search starts at the end and moves towards the
      * beginning of this string.
      */
     public int lastIndexOf(int c) {
@@ -1068,7 +1003,7 @@
 
     /**
      * Returns the last index of the code point {@code c}, or -1.
-     * The search for the character starts at offset {@code start} and moves towards
+     * The search starts at offset {@code start} and moves towards
      * the beginning of this string.
      */
     public int lastIndexOf(int c, int start) {
@@ -1101,14 +1036,10 @@
     }
 
     /**
-     * Searches in this string for the last index of the specified string. The
-     * search for the string starts at the end and moves towards the beginning
+     * Returns the index of the start of the last match for the given string in this string, or -1.
+     * The search for the string starts at the end and moves towards the beginning
      * of this string.
      *
-     * @param string
-     *            the string to find.
-     * @return the index of the first character of the specified string in this
-     *         string, -1 if the specified string is not a substring.
      * @throws NullPointerException
      *             if {@code string} is {@code null}.
      */
@@ -1118,16 +1049,11 @@
     }
 
     /**
-     * Searches in this string for the index of the specified string. The search
-     * for the string starts at the specified offset and moves towards the
-     * beginning of this string.
+     * Returns the index of the start of the previous match for the given string in this string,
+     * or -1.
+     * The search for the string starts at the given index and moves towards the beginning
+     * of this string.
      *
-     * @param subString
-     *            the string to find.
-     * @param start
-     *            the starting offset.
-     * @return the index of the first character of the specified string in this
-     *         string , -1 if the specified string is not a substring.
      * @throws NullPointerException
      *             if {@code subString} is {@code null}.
      */
@@ -1164,26 +1090,21 @@
     }
 
     /**
-     * Returns the number of characters in this string.
+     * Returns the number of {@code char}s in this string. If this string contains surrogate pairs,
+     * this is not the same as the number of code points.
      */
     public int length() {
         return count;
     }
 
     /**
-     * Compares the specified string to this string and compares the specified
-     * range of characters to determine if they are the same.
+     * Returns true if the given subsequence of the given string matches this string starting
+     * at the given offset.
      *
-     * @param thisStart
-     *            the starting offset in this string.
-     * @param string
-     *            the string to compare.
-     * @param start
-     *            the starting offset in the specified string.
-     * @param length
-     *            the number of characters to compare.
-     * @return {@code true} if the ranges of characters are equal, {@code false}
-     *         otherwise
+     * @param thisStart the start offset in this string.
+     * @param string the other string.
+     * @param start the start offset in {@code string}.
+     * @param length the number of {@code char}s to compare.
      * @throws NullPointerException
      *             if {@code string} is {@code null}.
      */
@@ -1212,22 +1133,21 @@
     }
 
     /**
-     * Compares the specified string to this string and compares the specified
-     * range of characters to determine if they are the same. When ignoreCase is
-     * true, the case of the characters is ignored during the comparison.
+     * Returns true if the given subsequence of the given string matches this string starting
+     * at the given offset.
+     *
+     * <p>If ignoreCase is true, case is ignored during the comparison.
+     * The strings are compared one {@code char} at a time. This is not suitable
+     * for case-insensitive string comparison for all locales.
+     * Use a {@link java.text.Collator} instead.
      *
      * @param ignoreCase
-     *            specifies if case should be ignored.
-     * @param thisStart
-     *            the starting offset in this string.
-     * @param string
-     *            the string to compare.
-     * @param start
-     *            the starting offset in the specified string.
-     * @param length
-     *            the number of characters to compare.
-     * @return {@code true} if the ranges of characters are equal, {@code false}
-     *         otherwise.
+     *     specifies if case should be ignored (use {@link java.text.Collator} instead for
+     *     non-ASCII case insensitivity).
+     * @param thisStart the start offset in this string.
+     * @param string the other string.
+     * @param start the start offset in {@code string}.
+     * @param length the number of {@code char}s to compare.
      * @throws NullPointerException
      *             if {@code string} is {@code null}.
      */
@@ -1259,14 +1179,7 @@
     }
 
     /**
-     * Copies this string replacing occurrences of the specified character with
-     * another character.
-     *
-     * @param oldChar
-     *            the character to replace.
-     * @param newChar
-     *            the replacement character.
-     * @return a new string with occurrences of oldChar replaced by newChar.
+     * Returns a copy of this string after replacing occurrences of the given {@code char} with another.
      */
     public String replace(char oldChar, char newChar) {
         char[] buffer = value;
@@ -1295,15 +1208,10 @@
     }
 
     /**
-     * Copies this string replacing occurrences of the specified target sequence
-     * with another sequence. The string is processed from the beginning to the
+     * Returns a copy of this string after replacing occurrences of {@code target} replaced
+     * with {@code replacement}. The string is processed from the beginning to the
      * end.
      *
-     * @param target
-     *            the sequence to replace.
-     * @param replacement
-     *            the replacement sequence.
-     * @return the resulting string.
      * @throws NullPointerException
      *             if {@code target} or {@code replacement} is {@code null}.
      */
@@ -1324,11 +1232,11 @@
 
         String replacementString = replacement.toString();
 
-        // The empty target matches at the start and end and between each character.
+        // The empty target matches at the start and end and between each char.
         int targetLength = targetString.length();
         if (targetLength == 0) {
-            // The result contains the original 'count' characters, a copy of the
-            // replacement string before every one of those characters, and a final
+            // The result contains the original 'count' chars, a copy of the
+            // replacement string before every one of those chars, and a final
             // copy of the replacement string at the end.
             int resultLength = count + (count + 1) * replacementString.length();
             StringBuilder result = new StringBuilder(resultLength);
@@ -1344,7 +1252,7 @@
         StringBuilder result = new StringBuilder(count);
         int searchStart = 0;
         do {
-            // Copy characters before the match...
+            // Copy chars before the match...
             result.append(value, offset + searchStart, matchStart - searchStart);
             // Insert the replacement...
             result.append(replacementString);
@@ -1389,13 +1297,9 @@
     }
 
     /**
-     * Returns a string containing a suffix of this string. The returned string
-     * shares this string's <a href="#backing_array">backing array</a>.
+     * Returns a string containing a suffix of this string starting at {@code start}.
+     * The returned string shares this string's <a href="#backing_array">backing array</a>.
      *
-     * @param start
-     *            the offset of the first character.
-     * @return a new string containing the characters from start to the end of
-     *         the string.
      * @throws IndexOutOfBoundsException
      *             if {@code start < 0} or {@code start > length()}.
      */
@@ -1410,24 +1314,18 @@
     }
 
     /**
-     * Returns a string containing a subsequence of characters from this string.
-     * The returned string shares this string's <a href="#backing_array">backing
-     * array</a>.
+     * Returns a string containing the given subsequence of this string.
+     * The returned string shares this string's <a href="#backing_array">backing array</a>.
      *
-     * @param start
-     *            the offset of the first character.
-     * @param end
-     *            the offset one past the last character.
-     * @return a new string containing the characters from start to end - 1
+     * @param start the start offset.
+     * @param end the end+1 offset.
      * @throws IndexOutOfBoundsException
-     *             if {@code start < 0}, {@code start > end} or {@code end >
-     *             length()}.
+     *             if {@code start < 0}, {@code start > end} or {@code end > length()}.
      */
     public String substring(int start, int end) {
         if (start == 0 && end == count) {
             return this;
         }
-        // NOTE last character not copied!
         // Fast range check.
         if (start >= 0 && start <= end && end <= count) {
             return new String(offset + start, end - start, value);
@@ -1436,8 +1334,8 @@
     }
 
     /**
-     * Returns a new {@code char} array containing a copy of the characters in this string.
-     * This is expensive and rarely useful. If you just want to iterate over the characters in
+     * Returns a new {@code char} array containing a copy of the {@code char}s in this string.
+     * This is expensive and rarely useful. If you just want to iterate over the {@code char}s in
      * the string, use {@link #charAt} instead.
      */
     public char[] toCharArray() {
@@ -1509,11 +1407,8 @@
     }
 
     /**
-     * Copies this string removing white space characters from the beginning and
-     * end of the string.
-     *
-     * @return a new string with characters <code><= \\u0020</code> removed from
-     *         the beginning and the end.
+     * Returns a string with no code points <code><= \\u0020</code> at
+     * the beginning or end.
      */
     public String trim() {
         int start = offset, last = offset + count - 1;
@@ -1531,13 +1426,10 @@
     }
 
     /**
-     * Creates a new string containing the characters in the specified character
-     * array. Modifying the character array after creating the string has no
+     * Returns a new string containing the same {@code char}s as the given
+     * array. Modifying the array after creating the string has no
      * effect on the string.
      *
-     * @param data
-     *            the array of characters.
-     * @return the new string.
      * @throws NullPointerException
      *             if {@code data} is {@code null}.
      */
@@ -1546,20 +1438,12 @@
     }
 
     /**
-     * Creates a new string containing the specified characters in the character
-     * array. Modifying the character array after creating the string has no
+     * Returns a new string containing the same {@code char}s as the given
+     * subset of the given array. Modifying the array after creating the string has no
      * effect on the string.
      *
-     * @param data
-     *            the array of characters.
-     * @param start
-     *            the starting offset in the character array.
-     * @param length
-     *            the number of characters to use.
-     * @return the new string.
      * @throws IndexOutOfBoundsException
-     *             if {@code length < 0}, {@code start < 0} or {@code start +
-     *             length > data.length}
+     *             if {@code length < 0}, {@code start < 0} or {@code start + length > data.length}
      * @throws NullPointerException
      *             if {@code data} is {@code null}.
      */
@@ -1568,11 +1452,7 @@
     }
 
     /**
-     * Converts the specified character to its string representation.
-     *
-     * @param value
-     *            the character.
-     * @return the character converted to a string.
+     * Returns a new string of just the given {@code char}.
      */
     public static String valueOf(char value) {
         String s;
@@ -1586,44 +1466,28 @@
     }
 
     /**
-     * Converts the specified double to its string representation.
-     *
-     * @param value
-     *            the double.
-     * @return the double converted to a string.
+     * Returns the string representation of the given double.
      */
     public static String valueOf(double value) {
         return Double.toString(value);
     }
 
     /**
-     * Converts the specified float to its string representation.
-     *
-     * @param value
-     *            the float.
-     * @return the float converted to a string.
+     * Returns the string representation of the given float.
      */
     public static String valueOf(float value) {
         return Float.toString(value);
     }
 
     /**
-     * Converts the specified integer to its string representation.
-     *
-     * @param value
-     *            the integer.
-     * @return the integer converted to a string.
+     * Returns the string representation of the given int.
      */
     public static String valueOf(int value) {
         return Integer.toString(value);
     }
 
     /**
-     * Converts the specified long to its string representation.
-     *
-     * @param value
-     *            the long.
-     * @return the long converted to a string.
+     * Returns the string representation of the given long.
      */
     public static String valueOf(long value) {
         return Long.toString(value);
@@ -1656,36 +1520,27 @@
     }
 
     /**
-     * Returns whether the characters in the StringBuffer {@code strbuf} are the
-     * same as those in this string.
+     * Returns true if the {@code char}s in the given {@code StringBuffer} are the same
+     * as those in this string.
      *
-     * @param strbuf
-     *            the StringBuffer to compare this string to.
-     * @return {@code true} if the characters in {@code strbuf} are identical to
-     *         those in this string. If they are not, {@code false} will be
-     *         returned.
      * @throws NullPointerException
-     *             if {@code strbuf} is {@code null}.
+     *             if {@code sb} is {@code null}.
      * @since 1.4
      */
-    public boolean contentEquals(StringBuffer strbuf) {
-        synchronized (strbuf) {
-            int size = strbuf.length();
+    public boolean contentEquals(StringBuffer sb) {
+        synchronized (sb) {
+            int size = sb.length();
             if (count != size) {
                 return false;
             }
-            return regionMatches(0, new String(0, size, strbuf.getValue()), 0,
-                    size);
+            return regionMatches(0, new String(0, size, sb.getValue()), 0, size);
         }
     }
 
     /**
-     * Compares a {@code CharSequence} to this {@code String} to determine if
-     * their contents are equal.
+     * Returns true if the {@code char}s in the given {@code CharSequence} are the same
+     * as those in this string.
      *
-     * @param cs
-     *            the character sequence to compare to.
-     * @return {@code true} if equal, otherwise {@code false}
      * @since 1.5
      */
     public boolean contentEquals(CharSequence cs) {
@@ -1804,14 +1659,8 @@
     }
 
     /**
-     * Has the same result as the substring function, but is present so that
-     * string may implement the CharSequence interface.
+     * Equivalent to {@link #substring(int, int)} but needed to implement {@code CharSequence}.
      *
-     * @param start
-     *            the offset the first character.
-     * @param end
-     *            the offset of one past the last character to include.
-     * @return the subsequence requested.
      * @throws IndexOutOfBoundsException
      *             if {@code start < 0}, {@code end < 0}, {@code start > end} or
      *             {@code end > length()}.
@@ -1872,13 +1721,8 @@
     }
 
     /**
-     * Determines if this {@code String} contains the sequence of characters in
-     * the {@code CharSequence} passed.
+     * Returns true if this string contains the {@code chars}s from the given {@code CharSequence}.
      *
-     * @param cs
-     *            the character sequence to search for.
-     * @return {@code true} if the sequence of characters are contained in this
-     *         string, otherwise {@code false}.
      * @since 1.5
      */
     public boolean contains(CharSequence cs) {
diff --git a/libart/src/main/java/java/lang/ref/Reference.java b/libart/src/main/java/java/lang/ref/Reference.java
index 3b03ff1..31ea588 100644
--- a/libart/src/main/java/java/lang/ref/Reference.java
+++ b/libart/src/main/java/java/lang/ref/Reference.java
@@ -98,6 +98,22 @@
 public abstract class Reference<T> {
 
     /**
+     * Forces JNI path.
+     * If GC is not in progress (ie: not going through slow path), the referent
+     * can be quickly returned through intrinsic without passing through JNI.
+     * This flag forces the JNI path so that it can be tested and benchmarked.
+     */
+    private static boolean disableIntrinsic = false;
+
+    /**
+     * Slow path flag for the reference processor.
+     * Used by the reference processor to determine whether or not the referent
+     * can be immediately returned. Because the referent might get swept during
+     * GC, the slow path, which passes through JNI, must be taken.
+     */
+    private static boolean slowPathEnabled = false;
+
+    /**
      * The object to which this reference refers.
      * VM requirement: this field <em>must</em> be called "referent"
      * and be an object.
diff --git a/luni/src/main/java/android/system/OsConstants.java b/luni/src/main/java/android/system/OsConstants.java
index cfed2f6..0a49311 100644
--- a/luni/src/main/java/android/system/OsConstants.java
+++ b/luni/src/main/java/android/system/OsConstants.java
@@ -352,6 +352,8 @@
     public static final int POLLRDNORM = placeholder();
     public static final int POLLWRBAND = placeholder();
     public static final int POLLWRNORM = placeholder();
+    public static final int PR_GET_DUMPABLE = placeholder();
+    public static final int PR_SET_DUMPABLE = placeholder();
     public static final int PR_SET_NO_NEW_PRIVS = placeholder();
     public static final int PROT_EXEC = placeholder();
     public static final int PROT_NONE = placeholder();
diff --git a/luni/src/main/java/java/io/Console.java b/luni/src/main/java/java/io/Console.java
index b6532eb..fe07694c 100644
--- a/luni/src/main/java/java/io/Console.java
+++ b/luni/src/main/java/java/io/Console.java
@@ -127,48 +127,17 @@
     }
 
     /**
-     * Reads a password from the console. The password will not be echoed to the display.
-     *
-     * @return a character array containing the password, or null at EOF.
+     * This method is unimplemented on Android.
      */
     public char[] readPassword() {
-        synchronized (CONSOLE_LOCK) {
-            int previousState = setEcho(false, 0);
-            try {
-                String password = readLine();
-                writer.println(); // We won't have echoed the user's newline.
-                return (password == null) ? null : password.toCharArray();
-            } finally {
-                setEcho(true, previousState);
-            }
-        }
+        throw new UnsupportedOperationException();
     }
 
-    private static int setEcho(boolean on, int previousState) {
-        try {
-            return setEchoImpl(on, previousState);
-        } catch (IOException ex) {
-            throw new IOError(ex);
-        }
-    }
-    private static native int setEchoImpl(boolean on, int previousState) throws IOException;
-
     /**
-     * Reads a password from the console. The password will not be echoed to the display.
-     * A formatted prompt is also displayed.
-     *
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     * @return a character array containing the password, or null at EOF.
+     * This method is unimplemented on Android.
      */
     public char[] readPassword(String format, Object... args) {
-        synchronized (CONSOLE_LOCK) {
-            format(format, args);
-            return readPassword();
-        }
+        throw new UnsupportedOperationException();
     }
 
     /**
diff --git a/luni/src/main/java/java/lang/Character.java b/luni/src/main/java/java/lang/Character.java
index 2bf3a89..e920a3e 100644
--- a/luni/src/main/java/java/lang/Character.java
+++ b/luni/src/main/java/java/lang/Character.java
@@ -1526,426 +1526,6 @@
 
     private static native int unicodeBlockForCodePoint(int codePoint);
 
-    /**
-     * Represents a <a href="http://www.unicode.org/reports/tr24/">Unicode script</a>.
-     * Every Unicode code point is contained by a single {@code UnicodeScript}. Code points
-     * shared between scripts will be in {@code COMMON}. Code points for combining
-     * characters that can be applied to multiple scripts will be in {@code INHERITED}
-     * because they inherit the script of their base character. Code points whose scripts
-     * don't have a corresponding {@code UnicodeScript} will be in {@code UNKNOWN}.
-     *
-     * @since 1.7
-     * @hide
-     */
-    public static enum UnicodeScript {
-        /** ISO 15924 English name "Arabic" */
-        ARABIC,
-        /** ISO 15924 English name "Armenian" */
-        ARMENIAN,
-        /** ISO 15924 English name "Avestan" */
-        AVESTAN,
-        /** ISO 15924 English name "Balinese" */
-        BALINESE,
-        /** ISO 15924 English name "Bamum" */
-        BAMUM,
-        /** ISO 15924 English name "Batak" */
-        BATAK,
-        /** ISO 15924 English name "Bengali" */
-        BENGALI,
-        /** ISO 15924 English name "Bopomofo" */
-        BOPOMOFO,
-        /** ISO 15924 English name "Brahmi" */
-        BRAHMI,
-        /** ISO 15924 English name "Braille" */
-        BRAILLE,
-        /** ISO 15924 English name "Buginese" */
-        BUGINESE,
-        /** ISO 15924 English name "Buhid" */
-        BUHID,
-        /** ISO 15924 English name "Unified Canadian Aboriginal Syllabics" */
-        CANADIAN_ABORIGINAL,
-        /** ISO 15924 English name "Carian" */
-        CARIAN,
-        /** ISO 15924 English name "Cham" */
-        CHAM,
-        /** ISO 15924 English name "Cherokee" */
-        CHEROKEE,
-        /** ISO 15924 English name "Common" */
-        COMMON,
-        /** ISO 15924 English name "Coptic" */
-        COPTIC,
-        /** ISO 15924 English name "Cuneiform" */
-        CUNEIFORM,
-        /** ISO 15924 English name "Cypriot" */
-        CYPRIOT,
-        /** ISO 15924 English name "Cyrillic" */
-        CYRILLIC,
-        /** ISO 15924 English name "Deseret" */
-        DESERET,
-        /** ISO 15924 English name "Devanagari" */
-        DEVANAGARI,
-        /** ISO 15924 English name "Egyptian hieroglyphs" */
-        EGYPTIAN_HIEROGLYPHS,
-        /** ISO 15924 English name "Ethiopic" */
-        ETHIOPIC,
-        /** ISO 15924 English name "Georgian" */
-        GEORGIAN,
-        /** ISO 15924 English name "Glagolitic" */
-        GLAGOLITIC,
-        /** ISO 15924 English name "Gothic" */
-        GOTHIC,
-        /** ISO 15924 English name "Greek" */
-        GREEK,
-        /** ISO 15924 English name "Gujarati" */
-        GUJARATI,
-        /** ISO 15924 English name "Gurmukhi" */
-        GURMUKHI,
-        /** ISO 15924 English name "Han" */
-        HAN,
-        /** ISO 15924 English name "Hangul" */
-        HANGUL,
-        /** ISO 15924 English name "Hanunoo" */
-        HANUNOO,
-        /** ISO 15924 English name "Hebrew" */
-        HEBREW,
-        /** ISO 15924 English name "Hiragana" */
-        HIRAGANA,
-        /** ISO 15924 English name "Imperial aramaic" */
-        IMPERIAL_ARAMAIC,
-        /** ISO 15924 English name "Inherited" */
-        INHERITED,
-        /** ISO 15924 English name "Inscriptional pahlavi" */
-        INSCRIPTIONAL_PAHLAVI,
-        /** ISO 15924 English name "Inscriptional parthian" */
-        INSCRIPTIONAL_PARTHIAN,
-        /** ISO 15924 English name "Javanese" */
-        JAVANESE,
-        /** ISO 15924 English name "Kaithi" */
-        KAITHI,
-        /** ISO 15924 English name "Kannada" */
-        KANNADA,
-        /** ISO 15924 English name "Katakana" */
-        KATAKANA,
-        /** ISO 15924 English name "Kayah li" */
-        KAYAH_LI,
-        /** ISO 15924 English name "Kharoshthi" */
-        KHAROSHTHI,
-        /** ISO 15924 English name "Khmer" */
-        KHMER,
-        /** ISO 15924 English name "Lao" */
-        LAO,
-        /** ISO 15924 English name "Latin" */
-        LATIN,
-        /** ISO 15924 English name "Lepcha" */
-        LEPCHA,
-        /** ISO 15924 English name "Limbu" */
-        LIMBU,
-        /** ISO 15924 English name "Linear B" */
-        LINEAR_B,
-        /** ISO 15924 English name "Lisu" */
-        LISU,
-        /** ISO 15924 English name "Lycian" */
-        LYCIAN,
-        /** ISO 15924 English name "Lydian" */
-        LYDIAN,
-        /** ISO 15924 English name "Malayalam" */
-        MALAYALAM,
-        /** ISO 15924 English name "Mandaic" */
-        MANDAIC,
-        /** ISO 15924 English name "Meetei Mayek (Meithei, Meetei)" */
-        MEETEI_MAYEK,
-        /** ISO 15924 English name "Mongolian" */
-        MONGOLIAN,
-        /** ISO 15924 English name "Myanmar" */
-        MYANMAR,
-        /** ISO 15924 English name "New Tai Lue" */
-        NEW_TAI_LUE,
-        /** ISO 15924 English name "Nko" */
-        NKO,
-        /** ISO 15924 English name "Ogham" */
-        OGHAM,
-        /** ISO 15924 English name "Ol Chiki" */
-        OL_CHIKI,
-        /** ISO 15924 English name "Old Italic" */
-        OLD_ITALIC,
-        /** ISO 15924 English name "Old Persian" */
-        OLD_PERSIAN,
-        /** ISO 15924 English name "Old South Arabian" */
-        OLD_SOUTH_ARABIAN,
-        /** ISO 15924 English name "Old Turkic, Orkhon Runic" */
-        OLD_TURKIC,
-        /** ISO 15924 English name "Oriya" */
-        ORIYA,
-        /** ISO 15924 English name "Osmanya" */
-        OSMANYA,
-        /** ISO 15924 English name "Phags-pa" */
-        PHAGS_PA,
-        /** ISO 15924 English name "Phoenician" */
-        PHOENICIAN,
-        /** ISO 15924 English name "Rejang" */
-        REJANG,
-        /** ISO 15924 English name "Runic" */
-        RUNIC,
-        /** ISO 15924 English name "Samaritan" */
-        SAMARITAN,
-        /** ISO 15924 English name "Saurashtra" */
-        SAURASHTRA,
-        /** ISO 15924 English name "Shavian" */
-        SHAVIAN,
-        /** ISO 15924 English name "Sinhala" */
-        SINHALA,
-        /** ISO 15924 English name "Sundanese" */
-        SUNDANESE,
-        /** ISO 15924 English name "Syloti Nagri" */
-        SYLOTI_NAGRI,
-        /** ISO 15924 English name "Syriac" */
-        SYRIAC,
-        /** ISO 15924 English name "Tagalog" */
-        TAGALOG,
-        /** ISO 15924 English name "Tagbanwa" */
-        TAGBANWA,
-        /** ISO 15924 English name "Tai Le" */
-        TAI_LE,
-        /** ISO 15924 English name "Tai Tham (Lanna)" */
-        TAI_THAM,
-        /** ISO 15924 English name "Tai Viet" */
-        TAI_VIET,
-        /** ISO 15924 English name "Tamil" */
-        TAMIL,
-        /** ISO 15924 English name "Telugu" */
-        TELUGU,
-        /** ISO 15924 English name "Thaana" */
-        THAANA,
-        /** ISO 15924 English name "Thai" */
-        THAI,
-        /** ISO 15924 English name "Tibetan" */
-        TIBETAN,
-        /** ISO 15924 English name "Tifinagh" */
-        TIFINAGH,
-        /** ISO 15924 English name "Ugaritic" */
-        UGARITIC,
-        /** ISO 15924 English name "Unknown" */
-        UNKNOWN,
-        /** ISO 15924 English name "Vai" */
-        VAI,
-        /** ISO 15924 English name "Yi" */
-        YI;
-
-        private static final UnicodeScript[] SCRIPTS = {
-                COMMON,
-                INHERITED,
-                ARABIC,
-                ARMENIAN,
-                BENGALI,
-                BOPOMOFO,
-                CHEROKEE,
-                COPTIC,
-                CYRILLIC,
-                DESERET,
-                DEVANAGARI,
-                ETHIOPIC,
-                GEORGIAN,
-                GOTHIC,
-                GREEK,
-                GUJARATI,
-                GURMUKHI,
-                HAN,
-                HANGUL,
-                HEBREW,
-                HIRAGANA,
-                KANNADA,
-                KATAKANA,
-                KHMER,
-                LAO,
-                LATIN,
-                MALAYALAM,
-                MONGOLIAN,
-                MYANMAR,
-                OGHAM,
-                OLD_ITALIC,
-                ORIYA,
-                RUNIC,
-                SINHALA,
-                SYRIAC,
-                TAMIL,
-                TELUGU,
-                THAANA,
-                THAI,
-                TIBETAN,
-                CANADIAN_ABORIGINAL,
-                YI,
-                TAGALOG,
-                HANUNOO,
-                BUHID,
-                TAGBANWA,
-                BRAILLE,
-                CYPRIOT,
-                LIMBU,
-                LINEAR_B,
-                OSMANYA,
-                SHAVIAN,
-                TAI_LE,
-                UGARITIC,
-                null,  // USCRIPT_KATAKANA_OR_HIRAGANA
-                BUGINESE,
-                GLAGOLITIC,
-                KHAROSHTHI,
-                SYLOTI_NAGRI,
-                NEW_TAI_LUE,
-                TIFINAGH,
-                OLD_PERSIAN,
-                BALINESE,
-                BATAK,
-                null, // USCRIPT_BLISSYMBOLS,
-                BRAHMI,
-                CHAM,
-                null,  // USCRIPT_CIRTH,
-                null,  // USCRIPT_OLD_CHURCH_SLAVONIC_CYRILLIC,
-                null,  // USCRIPT_DEMOTIC_EGYPTIAN,
-                null,  // USCRIPT_HIERATIC_EGYPTIAN,
-                EGYPTIAN_HIEROGLYPHS,
-                null,  // USCRIPT_USCRIPT_KHUTSURI,
-                null,  // USCRIPT_SIMPLIFIED_HAN,
-                null,  // USCRIPT_TRADITIONAL_HAN,
-                null,  // USCRIPT_PAHAWH_HMONG,
-                null,  // USCRIPT_OLD_HUNGARIAN,
-                null,  // USCRIPT_HARAPPAN_INDUS,
-                JAVANESE,
-                KAYAH_LI,
-                null,  // USCRIPT_LATIN_FRAKTUR,
-                null,  // USCRIPT_LATIN_GAELIC,
-                LEPCHA,
-                null,  // USCRIPT_LINEAR_A,
-                MANDAIC, // == MANDAEAN
-                null,  // USCRIPT_MAYAN_HIEROGLYPHS,
-                null,  // USCRIPT_MEROITIC_HIEROGLYPHS == USCRIPT_MEROITIC
-                null,  // USCRIPT_NKO,
-                OLD_TURKIC,  // USCRIPT_ORKHON == OLD_TURKIC,
-                null,  // USCRIPT_OLD_PERMIC,
-                PHAGS_PA,
-                PHOENICIAN,
-                null,  // USCRIPT_PHONETIC_POLLARD === MIAO,
-                null,  // USCRIPT_RONGORONGO,
-                null,  // USCRIPT_SARATI,
-                null,  // USCRIPT_ESTRANGELO_SYRIAC,
-                null,  // USCRIPT_WESTERN_SYRIAC,
-                null,  // USCRIPT_EASTERN_SYRIAC,
-                null,  // USCRIPT_TENGWAR,
-                VAI,
-                null,  // USCRIPT_VISIBLE_SPEECH,
-                CUNEIFORM,
-                null,  // USCRIPT_UNWRITTEN_LANGUAGES,
-                UNKNOWN,
-                CARIAN,
-                null,  // USCRIPT_JAPANESE,
-                TAI_THAM,  // USCRIPT_LANNA (aka TAI_THAM),
-                LYCIAN,
-                LYDIAN,
-                OL_CHIKI,
-                REJANG,
-                SAURASHTRA,
-                null,  // USCRIPT_SIGN_WRITING,
-                SUNDANESE,
-                null,  // USCRIPT_MOON,
-                MEETEI_MAYEK,  // USCRIPT_MEITEI_MAYEK (aka MEETEI, MEITHEI),
-                IMPERIAL_ARAMAIC,
-                AVESTAN,
-                null,  // USCRIPT_CHAKMA,
-                null,  // USCRIPT_KOREAN,
-                KAITHI,
-                null,  // USCRIPT_MANICHAEAN,
-                INSCRIPTIONAL_PAHLAVI,
-                null,  // USCRIPT_PSALTER_PAHLAVI,
-                null,  // USCRIPT_BOOK_PAHLAVI,
-                INSCRIPTIONAL_PARTHIAN,
-                SAMARITAN,
-                TAI_VIET,
-                null,  // USCRIPT_MATHEMATICAL_NOTATION,
-                null,  // USCRIPT_SYMBOLS,
-                BAMUM,
-                LISU,
-                null,  // USCRIPT_NAKHI_GEBA,
-                OLD_SOUTH_ARABIAN,
-                null,  // USCRIPT_BASSA_VAH,
-                null,  // USCRIPT_DUPLOYAN_SHORTAND,
-                null,  // USCRIPT_ELBASAN,
-                null,  // USCRIPT_GRANTHA,
-                null,  // USCRIPT_KPELLE,
-                null,  // USCRIPT_LOMA,
-                null,  // USCRIPT_MENDE,
-                null,  // USCRIPT_MEROITIC_CURSIVE,
-                null,  // USCRIPT_OLD_NORTH_ARABIAN,
-                null,  // USCRIPT_NABATAEAN,
-                null,  // USCRIPT_PALMYRENE,
-                null,  // USCRIPT_SINDHI,
-                null,  // USCRIPT_WARANG_CITI,
-                null,  // USCRIPT_AFAKA,
-                null,  // USCRIPT_JURCHEN,
-                null,  // USCRIPT_MRO,
-                null,  // USCRIPT_NUSHU,
-                null,  // USCRIPT_SHARADA,
-                null,  // USCRIPT_SORA_SOMPENG,
-                null,  // USCRIPT_TAKRI,
-                null,  // USCRIPT_TANGUT,
-                null,  // USCRIPT_WOLEAI,
-                null,  // USCRIPT_ANATOLIAN_HIEROGLYPHS,
-                null,  // USCRIPT_KHOJKI,
-                null,  // USCRIPT_TIRHUTA,
-        };
-
-        /**
-         * Returns the {@link UnicodeScript} value identified by {@code scriptName}.
-         * {@code scriptName} can be a ISO-15924 English script name
-         * or an alias (ISO-15924 script code) for that name.
-         * {@see http://www.unicode.org/iso15924/iso15924-codes.html}
-         * Lookups are case insensitive.
-         *
-         * @throws NullPointerException if {@code scriptName} is null.
-         * @throws IllegalAccessException if {@code scriptName} in invalid.
-         *
-         * @since 1.7
-         */
-        public static UnicodeScript forName(String scriptName) {
-            if (scriptName == null) {
-                throw new NullPointerException("scriptName == null");
-            }
-
-            final int script = unicodeScriptForName(scriptName);
-            if (script == -1 || script >= SCRIPTS.length ||
-                    SCRIPTS[script] == null) {
-                throw new IllegalArgumentException("Unknown script: " + scriptName);
-            }
-
-            return SCRIPTS[script];
-        }
-
-        /**
-         * Returns the {@link UnicodeScript} value that the given Unicode code
-         * point is assigned to.
-         *
-         * @throws IllegalArgumentException if {@code Point} is not a valid Unicode code point.
-         *
-         * @since 1.7
-         */
-        public static UnicodeScript of(int codePoint) {
-            checkValidCodePoint(codePoint);
-            int script = unicodeScriptForCodePoint(codePoint);
-            if (script == -1 || script >= SCRIPTS.length) {
-                // This signifies an ICU error. Complain loudly instead of swallowing
-                // the error up.
-                throw new IllegalArgumentException("Invalid codePoint: " + codePoint);
-            }
-
-            // This happens when ICU maps the code point to a script known to ICU but
-            // not the Java API.
-            if (SCRIPTS[script] == null) {
-                return UNKNOWN;
-            }
-
-            return SCRIPTS[script];
-        }
-    }
-
     private static native int unicodeScriptForName(String blockName);
 
     private static native int unicodeScriptForCodePoint(int codePoint);
@@ -2950,25 +2530,28 @@
     }
 
     /**
-     * Gets the Unicode directionality of the specified character.
-     *
-     * @param codePoint
-     *            the Unicode code point to get the directionality of.
-     * @return the Unicode directionality of {@code codePoint}.
+     * Returns the Unicode directionality of the given code point.
+     * This will be one of the {@code DIRECTIONALITY_} constants.
+     * For characters whose directionality is undefined, or whose
+     * directionality has no appropriate constant in this class,
+     * {@code DIRECTIONALITY_UNDEFINED} is returned.
      */
     public static byte getDirectionality(int codePoint) {
         if (getType(codePoint) == Character.UNASSIGNED) {
             return Character.DIRECTIONALITY_UNDEFINED;
         }
 
-        byte directionality = getDirectionalityImpl(codePoint);
-        if (directionality == -1) {
-            return -1;
+        byte directionality = getIcuDirectionality(codePoint);
+        if (directionality >= 0 && directionality < DIRECTIONALITY.length) {
+            return DIRECTIONALITY[directionality];
         }
-        return DIRECTIONALITY[directionality];
+        return Character.DIRECTIONALITY_UNDEFINED;
     }
 
-    private static native byte getDirectionalityImpl(int codePoint);
+    /**
+     * @hide - internal use only.
+     */
+    public static native byte getIcuDirectionality(int codePoint);
 
     /**
      * Indicates whether the specified character is mirrored.
diff --git a/luni/src/main/java/java/lang/StringToReal.java b/luni/src/main/java/java/lang/StringToReal.java
index 0f4eb09..4bd4fb1 100644
--- a/luni/src/main/java/java/lang/StringToReal.java
+++ b/luni/src/main/java/java/lang/StringToReal.java
@@ -122,20 +122,20 @@
                     result.e = -result.e;
                 }
             } catch (NumberFormatException ex) {
-                // We already checked the string, so the exponent must have been out of range for an int.
+                // We already checked the string, so the exponent must have been out of range for an
+                // int.
                 if (negativeExponent) {
                     result.zero = true;
                 } else {
                     result.infinity = true;
                 }
-                return result;
+                // Fall through: We want to check the content of the mantissa and throw an
+                // exception if it contains invalid characters. For example: "JUNK" * 10^12 should
+                // be treated as an error, not as infinity.
             }
         } else {
             end = length;
         }
-        if (length == 0) {
-            throw invalidReal(s, isDouble);
-        }
 
         int start = 0;
         c = s.charAt(start);
@@ -151,7 +151,19 @@
             throw invalidReal(s, isDouble);
         }
 
-        int decimal = s.indexOf('.');
+        // Confirm that the mantissa should parse.
+        int decimal = -1;
+        for (int i = start; i < end; i++) {
+            char mc = s.charAt(i);
+            if (mc == '.') {
+                if (decimal != -1) {
+                    throw invalidReal(s, isDouble);
+                }
+                decimal = i;
+            } else if (mc < '0' || mc > '9') {
+                throw invalidReal(s, isDouble);
+            }
+        }
         if (decimal > -1) {
             result.e -= end - decimal - 1;
             s = s.substring(start, decimal) + s.substring(decimal + 1, end);
@@ -159,10 +171,17 @@
             s = s.substring(start, end);
         }
 
-        if ((length = s.length()) == 0) {
+        length = s.length();
+        if (length == 0) {
             throw invalidReal(s, isDouble);
         }
 
+        // All syntactic checks that might throw an exception are above. If we have established
+        // one of the non-exception error conditions we can stop here.
+        if (result.infinity || result.zero) {
+            return result;
+        }
+
         end = length;
         while (end > 1 && s.charAt(end - 1) == '0') {
             --end;
diff --git a/luni/src/main/java/java/lang/System.java b/luni/src/main/java/java/lang/System.java
index 185701e..6cc77e6 100644
--- a/luni/src/main/java/java/lang/System.java
+++ b/luni/src/main/java/java/lang/System.java
@@ -171,14 +171,16 @@
      * @param length
      *            the number of elements to be copied.
      */
-    public static native void arraycopy(Object src, int srcPos, Object dst, int dstPos, int length);
+
+    public static native void arraycopy(Object src, int srcPos,
+        Object dst, int dstPos, int length);
 
     /**
      * The char array length threshold below which to use a Java
      * (non-native) version of arraycopy() instead of the native
      * version. See b/7103825.
      */
-    private static final int ARRAYCOPY_SHORT_CHAR_ARRAY_THRESHOLD = 64;
+    private static final int ARRAYCOPY_SHORT_CHAR_ARRAY_THRESHOLD = 32;
 
     /**
      * The char[] specialized version of arraycopy().
@@ -227,6 +229,377 @@
         char[] dst, int dstPos, int length);
 
     /**
+     * The byte array length threshold below which to use a Java
+     * (non-native) version of arraycopy() instead of the native
+     * version. See b/7103825.
+     */
+    private static final int ARRAYCOPY_SHORT_BYTE_ARRAY_THRESHOLD = 32;
+
+    /**
+     * The byte[] specialized version of arraycopy().
+     *
+     * @hide internal use only
+     */
+    public static void arraycopy(byte[] src, int srcPos, byte[] dst, int dstPos, int length) {
+        if (src == null) {
+            throw new NullPointerException("src == null");
+        }
+        if (dst == null) {
+            throw new NullPointerException("dst == null");
+        }
+        if (srcPos < 0 || dstPos < 0 || length < 0 ||
+            srcPos > src.length - length || dstPos > dst.length - length) {
+            throw new ArrayIndexOutOfBoundsException(
+                "src.length=" + src.length + " srcPos=" + srcPos +
+                " dst.length=" + dst.length + " dstPos=" + dstPos + " length=" + length);
+        }
+        if (length <= ARRAYCOPY_SHORT_BYTE_ARRAY_THRESHOLD) {
+            // Copy byte by byte for shorter arrays.
+            if (src == dst && srcPos < dstPos && dstPos < srcPos + length) {
+                // Copy backward (to avoid overwriting elements before
+                // they are copied in case of an overlap on the same
+                // array.)
+                for (int i = length - 1; i >= 0; --i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            } else {
+                // Copy forward.
+                for (int i = 0; i < length; ++i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            }
+        } else {
+            // Call the native version for longer arrays.
+            arraycopyByteUnchecked(src, srcPos, dst, dstPos, length);
+        }
+    }
+
+    /**
+     * The byte[] specialized, unchecked, native version of
+     * arraycopy(). This assumes error checking has been done.
+     */
+    private static native void arraycopyByteUnchecked(byte[] src, int srcPos,
+        byte[] dst, int dstPos, int length);
+
+    /**
+     * The short array length threshold below which to use a Java
+     * (non-native) version of arraycopy() instead of the native
+     * version. See b/7103825.
+     */
+    private static final int ARRAYCOPY_SHORT_SHORT_ARRAY_THRESHOLD = 32;
+
+    /**
+     * The short[] specialized version of arraycopy().
+     *
+     * @hide internal use only
+     */
+    public static void arraycopy(short[] src, int srcPos, short[] dst, int dstPos, int length) {
+        if (src == null) {
+            throw new NullPointerException("src == null");
+        }
+        if (dst == null) {
+            throw new NullPointerException("dst == null");
+        }
+        if (srcPos < 0 || dstPos < 0 || length < 0 ||
+            srcPos > src.length - length || dstPos > dst.length - length) {
+            throw new ArrayIndexOutOfBoundsException(
+                "src.length=" + src.length + " srcPos=" + srcPos +
+                " dst.length=" + dst.length + " dstPos=" + dstPos + " length=" + length);
+        }
+        if (length <= ARRAYCOPY_SHORT_SHORT_ARRAY_THRESHOLD) {
+            // Copy short by short for shorter arrays.
+            if (src == dst && srcPos < dstPos && dstPos < srcPos + length) {
+                // Copy backward (to avoid overwriting elements before
+                // they are copied in case of an overlap on the same
+                // array.)
+                for (int i = length - 1; i >= 0; --i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            } else {
+                // Copy forward.
+                for (int i = 0; i < length; ++i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            }
+        } else {
+            // Call the native version for longer arrays.
+            arraycopyShortUnchecked(src, srcPos, dst, dstPos, length);
+        }
+    }
+
+    /**
+     * The short[] specialized, unchecked, native version of
+     * arraycopy(). This assumes error checking has been done.
+     */
+    private static native void arraycopyShortUnchecked(short[] src, int srcPos,
+        short[] dst, int dstPos, int length);
+
+    /**
+     * The short array length threshold below which to use a Java
+     * (non-native) version of arraycopy() instead of the native
+     * version. See b/7103825.
+     */
+    private static final int ARRAYCOPY_SHORT_INT_ARRAY_THRESHOLD = 32;
+
+    /**
+     * The int[] specialized version of arraycopy().
+     *
+     * @hide internal use only
+     */
+    public static void arraycopy(int[] src, int srcPos, int[] dst, int dstPos, int length) {
+        if (src == null) {
+            throw new NullPointerException("src == null");
+        }
+        if (dst == null) {
+            throw new NullPointerException("dst == null");
+        }
+        if (srcPos < 0 || dstPos < 0 || length < 0 ||
+            srcPos > src.length - length || dstPos > dst.length - length) {
+            throw new ArrayIndexOutOfBoundsException(
+                "src.length=" + src.length + " srcPos=" + srcPos +
+                " dst.length=" + dst.length + " dstPos=" + dstPos + " length=" + length);
+        }
+        if (length <= ARRAYCOPY_SHORT_INT_ARRAY_THRESHOLD) {
+            // Copy int by int for shorter arrays.
+            if (src == dst && srcPos < dstPos && dstPos < srcPos + length) {
+                // Copy backward (to avoid overwriting elements before
+                // they are copied in case of an overlap on the same
+                // array.)
+                for (int i = length - 1; i >= 0; --i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            } else {
+                // Copy forward.
+                for (int i = 0; i < length; ++i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            }
+        } else {
+            // Call the native version for longer arrays.
+            arraycopyIntUnchecked(src, srcPos, dst, dstPos, length);
+        }
+    }
+
+    /**
+     * The int[] specialized, unchecked, native version of
+     * arraycopy(). This assumes error checking has been done.
+     */
+    private static native void arraycopyIntUnchecked(int[] src, int srcPos,
+        int[] dst, int dstPos, int length);
+
+    /**
+     * The short array length threshold below which to use a Java
+     * (non-native) version of arraycopy() instead of the native
+     * version. See b/7103825.
+     */
+    private static final int ARRAYCOPY_SHORT_LONG_ARRAY_THRESHOLD = 32;
+
+    /**
+     * The long[] specialized version of arraycopy().
+     *
+     * @hide internal use only
+     */
+    public static void arraycopy(long[] src, int srcPos, long[] dst, int dstPos, int length) {
+        if (src == null) {
+            throw new NullPointerException("src == null");
+        }
+        if (dst == null) {
+            throw new NullPointerException("dst == null");
+        }
+        if (srcPos < 0 || dstPos < 0 || length < 0 ||
+            srcPos > src.length - length || dstPos > dst.length - length) {
+            throw new ArrayIndexOutOfBoundsException(
+                "src.length=" + src.length + " srcPos=" + srcPos +
+                " dst.length=" + dst.length + " dstPos=" + dstPos + " length=" + length);
+        }
+        if (length <= ARRAYCOPY_SHORT_LONG_ARRAY_THRESHOLD) {
+            // Copy long by long for shorter arrays.
+            if (src == dst && srcPos < dstPos && dstPos < srcPos + length) {
+                // Copy backward (to avoid overwriting elements before
+                // they are copied in case of an overlap on the same
+                // array.)
+                for (int i = length - 1; i >= 0; --i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            } else {
+                // Copy forward.
+                for (int i = 0; i < length; ++i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            }
+        } else {
+            // Call the native version for longer arrays.
+            arraycopyLongUnchecked(src, srcPos, dst, dstPos, length);
+        }
+    }
+
+    /**
+     * The long[] specialized, unchecked, native version of
+     * arraycopy(). This assumes error checking has been done.
+     */
+    private static native void arraycopyLongUnchecked(long[] src, int srcPos,
+        long[] dst, int dstPos, int length);
+
+    /**
+     * The short array length threshold below which to use a Java
+     * (non-native) version of arraycopy() instead of the native
+     * version. See b/7103825.
+     */
+    private static final int ARRAYCOPY_SHORT_FLOAT_ARRAY_THRESHOLD = 32;
+
+    /**
+     * The float[] specialized version of arraycopy().
+     *
+     * @hide internal use only
+     */
+    public static void arraycopy(float[] src, int srcPos, float[] dst, int dstPos, int length) {
+        if (src == null) {
+            throw new NullPointerException("src == null");
+        }
+        if (dst == null) {
+            throw new NullPointerException("dst == null");
+        }
+        if (srcPos < 0 || dstPos < 0 || length < 0 ||
+            srcPos > src.length - length || dstPos > dst.length - length) {
+            throw new ArrayIndexOutOfBoundsException(
+                "src.length=" + src.length + " srcPos=" + srcPos +
+                " dst.length=" + dst.length + " dstPos=" + dstPos + " length=" + length);
+        }
+        if (length <= ARRAYCOPY_SHORT_FLOAT_ARRAY_THRESHOLD) {
+            // Copy float by float for shorter arrays.
+            if (src == dst && srcPos < dstPos && dstPos < srcPos + length) {
+                // Copy backward (to avoid overwriting elements before
+                // they are copied in case of an overlap on the same
+                // array.)
+                for (int i = length - 1; i >= 0; --i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            } else {
+                // Copy forward.
+                for (int i = 0; i < length; ++i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            }
+        } else {
+            // Call the native version for floater arrays.
+            arraycopyFloatUnchecked(src, srcPos, dst, dstPos, length);
+        }
+    }
+
+    /**
+     * The float[] specialized, unchecked, native version of
+     * arraycopy(). This assumes error checking has been done.
+     */
+    private static native void arraycopyFloatUnchecked(float[] src, int srcPos,
+        float[] dst, int dstPos, int length);
+
+    /**
+     * The short array length threshold below which to use a Java
+     * (non-native) version of arraycopy() instead of the native
+     * version. See b/7103825.
+     */
+    private static final int ARRAYCOPY_SHORT_DOUBLE_ARRAY_THRESHOLD = 32;
+
+    /**
+     * The double[] specialized version of arraycopy().
+     *
+     * @hide internal use only
+     */
+    public static void arraycopy(double[] src, int srcPos, double[] dst, int dstPos, int length) {
+        if (src == null) {
+            throw new NullPointerException("src == null");
+        }
+        if (dst == null) {
+            throw new NullPointerException("dst == null");
+        }
+        if (srcPos < 0 || dstPos < 0 || length < 0 ||
+            srcPos > src.length - length || dstPos > dst.length - length) {
+            throw new ArrayIndexOutOfBoundsException(
+                "src.length=" + src.length + " srcPos=" + srcPos +
+                " dst.length=" + dst.length + " dstPos=" + dstPos + " length=" + length);
+        }
+        if (length <= ARRAYCOPY_SHORT_DOUBLE_ARRAY_THRESHOLD) {
+            // Copy double by double for shorter arrays.
+            if (src == dst && srcPos < dstPos && dstPos < srcPos + length) {
+                // Copy backward (to avoid overwriting elements before
+                // they are copied in case of an overlap on the same
+                // array.)
+                for (int i = length - 1; i >= 0; --i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            } else {
+                // Copy forward.
+                for (int i = 0; i < length; ++i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            }
+        } else {
+            // Call the native version for floater arrays.
+            arraycopyDoubleUnchecked(src, srcPos, dst, dstPos, length);
+        }
+    }
+
+    /**
+     * The double[] specialized, unchecked, native version of
+     * arraycopy(). This assumes error checking has been done.
+     */
+    private static native void arraycopyDoubleUnchecked(double[] src, int srcPos,
+        double[] dst, int dstPos, int length);
+
+    /**
+     * The short array length threshold below which to use a Java
+     * (non-native) version of arraycopy() instead of the native
+     * version. See b/7103825.
+     */
+    private static final int ARRAYCOPY_SHORT_BOOLEAN_ARRAY_THRESHOLD = 32;
+
+    /**
+     * The boolean[] specialized version of arraycopy().
+     *
+     * @hide internal use only
+     */
+    public static void arraycopy(boolean[] src, int srcPos, boolean[] dst, int dstPos, int length) {
+        if (src == null) {
+            throw new NullPointerException("src == null");
+        }
+        if (dst == null) {
+            throw new NullPointerException("dst == null");
+        }
+        if (srcPos < 0 || dstPos < 0 || length < 0 ||
+            srcPos > src.length - length || dstPos > dst.length - length) {
+            throw new ArrayIndexOutOfBoundsException(
+                "src.length=" + src.length + " srcPos=" + srcPos +
+                " dst.length=" + dst.length + " dstPos=" + dstPos + " length=" + length);
+        }
+        if (length <= ARRAYCOPY_SHORT_BOOLEAN_ARRAY_THRESHOLD) {
+            // Copy boolean by boolean for shorter arrays.
+            if (src == dst && srcPos < dstPos && dstPos < srcPos + length) {
+                // Copy backward (to avoid overwriting elements before
+                // they are copied in case of an overlap on the same
+                // array.)
+                for (int i = length - 1; i >= 0; --i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            } else {
+                // Copy forward.
+                for (int i = 0; i < length; ++i) {
+                    dst[dstPos + i] = src[srcPos + i];
+                }
+            }
+        } else {
+            // Call the native version for floater arrays.
+            arraycopyBooleanUnchecked(src, srcPos, dst, dstPos, length);
+        }
+    }
+
+    /**
+     * The boolean[] specialized, unchecked, native version of
+     * arraycopy(). This assumes error checking has been done.
+     */
+    private static native void arraycopyBooleanUnchecked(boolean[] src, int srcPos,
+        boolean[] dst, int dstPos, int length);
+
+    /**
      * Returns the current time in milliseconds since January 1, 1970 00:00:00.0 UTC.
      *
      * <p>This method always returns UTC times, regardless of the system's time zone.
diff --git a/luni/src/main/java/java/net/HttpCookie.java b/luni/src/main/java/java/net/HttpCookie.java
index 04121f7..dd81fd6 100644
--- a/luni/src/main/java/java/net/HttpCookie.java
+++ b/luni/src/main/java/java/net/HttpCookie.java
@@ -560,28 +560,6 @@
     }
 
     /**
-     * Returns the {@code HttpOnly} attribute. If {@code true} the cookie should not be accessible
-     * to scripts in a browser.
-     *
-     * @since 1.7
-     * @hide Until ready for an API update
-     */
-    public boolean isHttpOnly() {
-        return httpOnly;
-    }
-
-    /**
-     * Returns the {@code HttpOnly} attribute. If {@code true} the cookie should not be accessible
-     * to scripts in a browser.
-     *
-     * @since 1.7
-     * @hide Until ready for an API update
-     */
-    public void setHttpOnly(boolean httpOnly) {
-        this.httpOnly = httpOnly;
-    }
-
-    /**
      * Returns the value of this cookie.
      */
     public String getValue() {
diff --git a/luni/src/main/java/java/net/SocketOption.java b/luni/src/main/java/java/net/SocketOption.java
deleted file mode 100644
index 3f65494..0000000
--- a/luni/src/main/java/java/net/SocketOption.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.net;
-
-/**
- * An option associated with a socket.
- *
- * <p>See {@link java.nio.channels.NetworkChannel#setOption},
- * {@link java.nio.channels.NetworkChannel#getOption} and
- * {@link java.nio.channels.NetworkChannel#supportedOptions} for methods that use SocketOption.
- *
- * <p>See {@link StandardSocketOptions} for valid SocketOptions.
- *
- * @param <T> the type of the value
- * @since 1.7
- * @hide Until ready for a public API change
- */
-public interface SocketOption<T> {
-
-  /**
-   * Returns the name of the option.
-   */
-  String name();
-
-  /**
-   * Returns the type of the value of the option.
-   */
-  Class<T> type();
-}
diff --git a/luni/src/main/java/java/net/StandardSocketOptions.java b/luni/src/main/java/java/net/StandardSocketOptions.java
deleted file mode 100644
index 3d10caf..0000000
--- a/luni/src/main/java/java/net/StandardSocketOptions.java
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.net;
-
-import java.io.FileDescriptor;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import libcore.io.IoBridge;
-
-/**
- * Defines the set standard of socket options that can be supported by network channels.
- *
- * <p>See {@link java.nio.channels.NetworkChannel} for more information, particularly
- * {@link java.nio.channels.NetworkChannel#supportedOptions()} for the options that are supported
- * for each type of socket.
- *
- * @since 1.7
- * @hide Until ready for a public API change
- */
-public final class StandardSocketOptions {
-
-  /**
-   * The outgoing interface for multicast packets.
-   *
-   * <p>See {@link SocketOptions#IP_MULTICAST_IF2} for further documentation.
-   */
-  public static final SocketOption<NetworkInterface> IP_MULTICAST_IF =
-      new NetworkInterfaceSocketOption("IP_MULTICAST_IF", SocketOptions.IP_MULTICAST_IF2);
-
-  /**
-   * Whether the local loopback of multicast packets is enabled (true) or disabled (false). This
-   * option is enabled by default.
-   *
-   * <p>See {@link SocketOptions#IP_MULTICAST_LOOP} for further documentation.
-   */
-  public static final SocketOption<Boolean> IP_MULTICAST_LOOP =
-      new BooleanSocketOption("IP_MULTICAST_LOOP", SocketOptions.IP_MULTICAST_LOOP);
-
-  /**
-   * The time-to-live (TTL) for multicast packets. The value must be between 0 and 255 inclusive.
-   * A 0 value restricts the packet to the originating host. See also {@link #IP_MULTICAST_LOOP}.
-   * The default value is 1.
-   *
-   * <p>See <a href="http://tools.ietf.org/rfc/rfc1112.txt">RFC 1112: Host Extensions for IP
-   * Multicasting</a> for more information about IP multicast.
-   */
-  public static final SocketOption<Integer> IP_MULTICAST_TTL =
-      new ByteRangeSocketOption("IP_MULTICAST_TTL", IoBridge.JAVA_IP_MULTICAST_TTL);
-
-  /**
-   * The value for the type-of-service field of the IPv4 header, or the traffic class field of the
-   * IPv6 header. These correspond to the IP_TOS and IPV6_TCLASS socket options. These may be
-   * ignored by the underlying OS. Values must be between 0 and 255 inclusive.
-   *
-   * <p>See {@link SocketOptions#IP_TOS} for further documentation.
-   */
-  public static final SocketOption<Integer> IP_TOS =
-      new ByteRangeSocketOption("IP_TOS", SocketOptions.IP_TOS);
-
-  /**
-   * Whether broadcasting on datagram sockets is enabled or disabled. This option must be enabled to
-   * send broadcast messages. The default value is false.
-   *
-   * <p>See {@link SocketOptions#SO_BROADCAST} for further documentation.
-   */
-  public static final SocketOption<Boolean> SO_BROADCAST =
-      new BooleanSocketOption("SO_BROADCAST", SocketOptions.SO_BROADCAST);
-
-  /**
-   * Whether the kernel sends keepalive messages on connection-oriented sockets.
-   *
-   * <p>See {@link SocketOptions#SO_KEEPALIVE} for further documentation.
-   */
-  public static final SocketOption<Boolean> SO_KEEPALIVE =
-      new BooleanSocketOption("SO_KEEPALIVE", SocketOptions.SO_KEEPALIVE);
-
-  /**
-   * Number of seconds to wait when closing a socket if there is still some buffered data to be
-   * sent.
-   *
-   * <p>If this option is negative this option is disabled. This is the default value. If the value
-   * is 0 or positive it is enabled.
-   *
-   * <p>See {@link SocketOptions#SO_LINGER} for further documentation.
-   *
-   */
-  public static final SocketOption<Integer> SO_LINGER =
-      new SocketOptionImpl<Integer>("SO_LINGER", Integer.class, SocketOptions.SO_LINGER) {
-        @Override
-        protected Object validateAndConvertValueBeforeSet(
-            FileDescriptor fd, Integer value) {
-          Object objectValue = super.validateAndConvertValueBeforeSet(fd, value);
-          if (value != null && value < 0) {
-            // IoBridge requires a "false" object to disable linger.
-            objectValue = Boolean.FALSE;
-          }
-          return objectValue;
-        }
-
-        @Override
-        protected Integer validateAndConvertValueAfterGet(FileDescriptor fd, Object value) {
-          // IoBridge returns a "false" object to indicate that linger is disabled.
-          if (value != null && value instanceof Boolean) {
-            value = -1;
-          }
-          return super.validateAndConvertValueAfterGet(fd, value);
-        }
-      };
-
-  /**
-   * The size in bytes of a socket's receive buffer. This must be an integer greater than 0.
-   * This is a hint to the kernel; the kernel may use a larger buffer.
-   *
-   * <p>See {@link SocketOptions#SO_RCVBUF} for further documentation.
-   */
-  public static final SocketOption<Integer> SO_RCVBUF =
-      new PositiveIntegerSocketOption("SO_RCVBUF", SocketOptions.SO_RCVBUF);
-
-  /**
-   * Whether a reuse of a local address is allowed when another socket has not yet been removed by
-   * the operating system.
-   *
-   * <p>See {@link SocketOptions#SO_REUSEADDR} for further documentation.
-   */
-  public static final SocketOption<Boolean> SO_REUSEADDR =
-      new BooleanSocketOption("SO_REUSEADDR", SocketOptions.SO_REUSEADDR);
-
-  /**
-   * The size in bytes of a socket's send buffer. This must be an integer greater than 0.
-   * This is a hint to the kernel; the kernel may use a larger buffer.
-   *
-   * <p>See {@link SocketOptions#SO_SNDBUF} for further documentation.
-   */
-  public static final SocketOption<Integer> SO_SNDBUF =
-      new PositiveIntegerSocketOption("SO_SNDBUF", SocketOptions.SO_SNDBUF);
-
-  /**
-   * Specifies whether data is sent immediately on this socket or buffered.
-   *
-   * <p>See {@link SocketOptions#TCP_NODELAY} for further documentation.
-   */
-  public static final SocketOption<Boolean> TCP_NODELAY =
-      new BooleanSocketOption("TCP_NODELAY", SocketOptions.TCP_NODELAY);
-
-  /**
-   * The set of supported options for UDP sockets.
-   *
-   * @hide internal use only
-   */
-  public static final Set<SocketOption<?>> DATAGRAM_SOCKET_OPTIONS;
-
-  static {
-    HashSet<SocketOption<?>> mutableSet = new HashSet<SocketOption<?>>(8);
-    mutableSet.add(IP_MULTICAST_IF);
-    mutableSet.add(IP_MULTICAST_LOOP);
-    mutableSet.add(IP_MULTICAST_TTL);
-    mutableSet.add(IP_TOS);
-    mutableSet.add(SO_BROADCAST);
-    mutableSet.add(SO_REUSEADDR);
-    mutableSet.add(SO_RCVBUF);
-    mutableSet.add(SO_SNDBUF);
-    DATAGRAM_SOCKET_OPTIONS = Collections.unmodifiableSet(mutableSet);
-  }
-
-  /**
-   * The set of supported options for TCP sockets.
-   *
-   * @hide internal use only
-   */
-  public static final Set<SocketOption<?>> SOCKET_OPTIONS;
-
-  static {
-    HashSet<SocketOption<?>> mutableSet = new HashSet<SocketOption<?>>(7);
-    mutableSet.add(IP_TOS);
-    mutableSet.add(SO_KEEPALIVE);
-    mutableSet.add(SO_LINGER);
-    mutableSet.add(TCP_NODELAY);
-    mutableSet.add(SO_RCVBUF);
-    mutableSet.add(SO_REUSEADDR);
-    mutableSet.add(SO_SNDBUF);
-    SOCKET_OPTIONS = Collections.unmodifiableSet(mutableSet);
-  }
-
-  /**
-   * The set of supported options for TCP server sockets.
-   *
-   * @hide internal use only
-   */
-  public static final Set<SocketOption<?>> SERVER_SOCKET_OPTIONS;
-
-  static {
-    HashSet<SocketOption<?>> mutableSet = new HashSet<SocketOption<?>>(2);
-    mutableSet.add(SO_RCVBUF);
-    mutableSet.add(SO_REUSEADDR);
-    SERVER_SOCKET_OPTIONS = Collections.unmodifiableSet(mutableSet);
-  }
-
-  /**
-   * A base class for SocketOption objects that passes the values to/from {@link IoBridge} as they
-   * are. For use with simple types like Integer and Boolean, and can be extended for more
-   * validation / type conversion.
-   *
-   * @hide internal use only
-   */
-  public static class SocketOptionImpl<T> implements SocketOption<T> {
-
-    protected final String name;
-
-    private final Class<T> type;
-
-    protected final int socketOption;
-
-    public SocketOptionImpl(String name, Class<T> type, int socketOption) {
-      this.name = name;
-      this.type = type;
-      this.socketOption = socketOption;
-    }
-
-    @Override
-    public String name() {
-      return name;
-    }
-
-    @Override
-    public Class<T> type() {
-      return type;
-    }
-
-    /**
-     * Sets the socket option of the file descriptor to value using IoBridge.
-     *
-     * @hide internal method
-     */
-    public final void setValue(FileDescriptor fd, T value) throws IOException {
-      // Sanity check required because of type erasure.
-      if (value != null && !type.isAssignableFrom(value.getClass())) {
-        throw new AssertionError("Invalid type " + value + " of value for " + name);
-      }
-      Object objectValue = validateAndConvertValueBeforeSet(fd, value);
-      IoBridge.setSocketOption(fd, socketOption, objectValue);
-    }
-
-    /**
-     * Throws IllegalArgumentException if the value is outside of the acceptable range.
-     * Subclasses can override to apply option-specific validate, and may also convert the value
-     * to a different type or value. The default implementation prevents null values and returns
-     * the value unchanged.
-     */
-    protected Object validateAndConvertValueBeforeSet(FileDescriptor fd, T value) {
-      if (value == null) {
-        throw new IllegalArgumentException("value for " + name + " must not be null");
-      }
-      return value;
-    }
-
-    /**
-     * Gets the value of the socket option.
-     *
-     * @hide internal method
-     */
-    public final T getValue(FileDescriptor fd) throws IOException {
-      Object value = IoBridge.getSocketOption(fd, socketOption);
-      T typedValue = validateAndConvertValueAfterGet(fd, value);
-      if (typedValue != null && !type.isAssignableFrom(typedValue.getClass())) {
-        // Sanity check required because of type erasure.
-        throw new AssertionError("Unexpected type of value returned for " + name);
-      }
-      return typedValue;
-    }
-
-    /**
-     * Throws AssertionError if the value is outside of the acceptable range.
-     * Implementations may also convert the value to a different type or
-     * value. The default implementation does nothing.
-     */
-    @SuppressWarnings("unchecked")
-    protected T validateAndConvertValueAfterGet(FileDescriptor fd, Object value) {
-      return (T) value;
-    }
-  }
-
-  /**
-   * A SocketOption capable of setting / getting an boolean value.
-   */
-  private static class BooleanSocketOption extends SocketOptionImpl<Boolean> {
-
-    public BooleanSocketOption(String name, int socketOption) {
-      super(name, Boolean.class, socketOption);
-    }
-  }
-
-  /**
-   * A SocketOption capable of setting / getting an network interface value.
-   */
-  private static class NetworkInterfaceSocketOption extends SocketOptionImpl<NetworkInterface> {
-
-    public NetworkInterfaceSocketOption(String name, int socketOption) {
-      super(name, NetworkInterface.class, socketOption);
-    }
-
-    @Override
-    public Integer validateAndConvertValueBeforeSet(FileDescriptor fd, NetworkInterface value) {
-      if (value == null) {
-        throw new IllegalArgumentException("value for " + name + " must not be null");
-      }
-      int nicIndex = value.getIndex();
-      if (nicIndex == -1) {
-        throw new IllegalArgumentException("The NetworkInterface must have a valid index");
-      }
-      return nicIndex;
-    }
-
-    @Override
-    public NetworkInterface validateAndConvertValueAfterGet(FileDescriptor fd, Object value) {
-      if (value == null) {
-        return null;
-      } else if (!(value instanceof Integer)) {
-        throw new AssertionError("Unexpected type of value returned for " + name);
-      }
-
-      int nicIndex = (Integer) value;
-      try {
-        return NetworkInterface.getByIndex(nicIndex);
-      } catch (SocketException e) {
-        throw new IllegalArgumentException(
-            "Unable to resolve NetworkInterface index: " + nicIndex, e);
-      }
-    }
-  }
-
-  /**
-   * A SocketOption capable of setting / getting an integer in the range 0-255.
-   */
-  private static class ByteRangeSocketOption extends SocketOptionImpl<Integer> {
-
-    public ByteRangeSocketOption(String name, int socketOption) {
-      super(name, Integer.class, socketOption);
-    }
-
-    @Override
-    protected Object validateAndConvertValueBeforeSet(FileDescriptor fd, Integer value) {
-      if (value == null || value < 0 || value > 255) {
-        throw new IllegalArgumentException(name + " must be >= 0 and <= 255, is " + value);
-      }
-      return value;
-    }
-
-    @Override
-    protected Integer validateAndConvertValueAfterGet(FileDescriptor fd, Object value) {
-      if (!(value instanceof Integer)) {
-        throw new AssertionError("Unexpected value for option " + name + ": " + value);
-      }
-      int intValue = (Integer) value;
-      if (intValue < 0 || intValue > 255) {
-        throw new AssertionError("Unexpected value for option " + name + ": " + value);
-      }
-      return intValue;
-    }
-  }
-
-  /**
-   * A SocketOption capable of setting / getting an integer in the range 1..
-   */
-  private static class PositiveIntegerSocketOption extends SocketOptionImpl<Integer> {
-
-    public PositiveIntegerSocketOption(String name, int socketOption) {
-      super(name, Integer.class, socketOption);
-    }
-
-    @Override
-    protected Integer validateAndConvertValueBeforeSet(FileDescriptor fd, Integer value) {
-      if (value < 1) {
-        throw new IllegalArgumentException(name + " value must be > 0");
-      }
-      return value;
-    }
-
-    @Override
-    protected Integer validateAndConvertValueAfterGet(FileDescriptor fd, Object value) {
-      if (!(value instanceof Integer)) {
-        throw new AssertionError("Unexpected value for option " + name + ": " + value);
-      }
-      int intValue = (Integer) value;
-      if (intValue < 1) {
-        throw new AssertionError("Unexpected value for option " + name + ": " + value);
-      }
-      return intValue;
-    }
-  }
-}
diff --git a/luni/src/main/java/java/net/URLConnection.java b/luni/src/main/java/java/net/URLConnection.java
index cc7de90..2fb3f45 100644
--- a/luni/src/main/java/java/net/URLConnection.java
+++ b/luni/src/main/java/java/net/URLConnection.java
@@ -316,17 +316,6 @@
     }
 
     /**
-     * Returns the content length in bytes specified by the response header field
-     * {@code content-length} or {@code -1} if this field is not set.
-     *
-     * @since 1.7
-     * @hide Until ready for a public API change
-     */
-    public long getContentLengthLong() {
-        return getHeaderFieldLong("Content-Length", -1);
-    }
-
-    /**
      * Returns the MIME-type of the content specified by the response header field
      * {@code content-type} or {@code null} if type is unknown.
      *
@@ -558,27 +547,6 @@
     }
 
     /**
-     * Returns the specified header value as a number. Returns the {@code
-     * defaultValue} if no such header field could be found or the value could
-     * not be parsed as a {@code long}.
-     *
-     * @param field
-     *            the header field name whose value is needed.
-     * @param defaultValue
-     *            the default value if no field has been found.
-     * @return the value of the specified header field as a number.
-     * @since 1.7
-     * @hide Until ready for a public API change
-     */
-    public long getHeaderFieldLong(String field, long defaultValue) {
-        try {
-            return Long.parseLong(getHeaderField(field));
-        } catch (NumberFormatException e) {
-            return defaultValue;
-        }
-    }
-
-    /**
      * Returns the name of the header field at the given position {@code posn} or
      * {@code null} if there are fewer than {@code posn} fields. The base
      * implementation of this method returns always {@code null}.
diff --git a/luni/src/main/java/java/nio/ByteBuffer.java b/luni/src/main/java/java/nio/ByteBuffer.java
index 5873590..61093fa 100644
--- a/luni/src/main/java/java/nio/ByteBuffer.java
+++ b/luni/src/main/java/java/nio/ByteBuffer.java
@@ -69,7 +69,11 @@
         if (capacity < 0) {
             throw new IllegalArgumentException("capacity < 0: " + capacity);
         }
-        return new DirectByteBuffer(MemoryBlock.allocate(capacity), capacity, 0, false, null);
+        // Ensure alignment by 8.
+        MemoryBlock memoryBlock = MemoryBlock.allocate(capacity + 7);
+        long address = memoryBlock.toLong();
+        long alignedAddress = (address + 7) & ~(long)7;
+        return new DirectByteBuffer(memoryBlock, capacity, (int)(alignedAddress - address), false, null);
     }
 
     /**
diff --git a/luni/src/main/java/java/nio/DatagramChannelImpl.java b/luni/src/main/java/java/nio/DatagramChannelImpl.java
index 8a5dbb6..e736c40 100644
--- a/luni/src/main/java/java/nio/DatagramChannelImpl.java
+++ b/luni/src/main/java/java/nio/DatagramChannelImpl.java
@@ -32,14 +32,10 @@
 import java.net.PlainDatagramSocketImpl;
 import java.net.SocketAddress;
 import java.net.SocketException;
-import java.net.SocketOption;
-import java.net.StandardSocketOptions;
-import java.nio.channels.AlreadyBoundException;
 import java.nio.channels.AlreadyConnectedException;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.DatagramChannel;
 import java.nio.channels.IllegalBlockingModeException;
-import java.nio.channels.MembershipKey;
 import java.nio.channels.NotYetConnectedException;
 import java.nio.channels.spi.SelectorProvider;
 import java.nio.channels.UnresolvedAddressException;
@@ -79,9 +75,6 @@
     private final Object readLock = new Object();
     private final Object writeLock = new Object();
 
-    // A helper to manage multicast group membership. Created as required.
-    private MulticastMembershipHandler multicastMembershipHandler;
-
     /*
      * Constructor
      */
@@ -112,29 +105,6 @@
         return socket;
     }
 
-    /** @hide Until ready for a public API change */
-    @Override
-    synchronized public DatagramChannel bind(SocketAddress local) throws IOException {
-        checkOpen();
-        if (isBound) {
-            throw new AlreadyBoundException();
-        }
-
-        if (local == null) {
-            local = new InetSocketAddress(Inet4Address.ANY, 0);
-        } else if (!(local instanceof InetSocketAddress)) {
-            throw new UnsupportedAddressTypeException();
-        }
-
-        InetSocketAddress localAddress = (InetSocketAddress) local;
-        if (localAddress.isUnresolved()) {
-            throw new UnresolvedAddressException();
-        }
-        IoBridge.bind(fd, localAddress.getAddress(), localAddress.getPort());
-        onBind(true /* updateSocketState */);
-        return this;
-    }
-
     /**
      * Initialise the isBound, localAddress and localPort state from the file descriptor. Used when
      * some or all of the bound state has been left to the OS to decide, or when the Socket handled
@@ -162,34 +132,6 @@
 
     /** @hide Until ready for a public API change */
     @Override
-    synchronized public SocketAddress getLocalAddress() throws IOException {
-        checkOpen();
-        return isBound ? new InetSocketAddress(localAddress, localPort) : null;
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> T getOption(SocketOption<T> option) throws IOException {
-        return NioUtils.getSocketOption(
-                this, StandardSocketOptions.DATAGRAM_SOCKET_OPTIONS, option);
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> DatagramChannel setOption(SocketOption<T> option, T value) throws IOException {
-        checkOpen();
-        NioUtils.setSocketOption(
-                this, StandardSocketOptions.DATAGRAM_SOCKET_OPTIONS, option, value);
-        return this;
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public Set<SocketOption<?>> supportedOptions() {
-        return StandardSocketOptions.DATAGRAM_SOCKET_OPTIONS;
-    }
-
-    @Override
     synchronized public boolean isConnected() {
         return connected;
     }
@@ -524,7 +466,6 @@
         // A closed channel is not connected.
         onDisconnect(true /* updateSocketState */);
         IoBridge.closeAndSignalBlockedThreads(fd);
-        multicastMembershipHandler = null;
 
         if (socket != null && !socket.isClosed()) {
             socket.onClose();
@@ -570,52 +511,6 @@
         return fd;
     }
 
-    @Override
-    synchronized public MembershipKey join(InetAddress groupAddress,
-        NetworkInterface networkInterface) throws IOException {
-
-        checkOpen();
-        ensureMembershipHandlerExists();
-        return multicastMembershipHandler.addAnySourceMembership(networkInterface, groupAddress);
-    }
-
-    @Override
-    synchronized public MembershipKey join(
-            InetAddress groupAddress, NetworkInterface networkInterface, InetAddress sourceAddress)
-            throws IOException {
-        checkOpen();
-        ensureMembershipHandlerExists();
-        return multicastMembershipHandler.addSourceSpecificMembership(
-                networkInterface, groupAddress, sourceAddress);
-    }
-
-    synchronized void multicastDrop(MembershipKeyImpl membershipKey) {
-        ensureMembershipHandlerExists();
-        multicastMembershipHandler.dropMembership(membershipKey);
-    }
-
-    synchronized void multicastBlock(MembershipKeyImpl membershipKey, InetAddress sourceAddress)
-            throws SocketException {
-
-        ensureMembershipHandlerExists();
-        multicastMembershipHandler.block(membershipKey, sourceAddress);
-    }
-
-    synchronized void multicastUnblock(MembershipKeyImpl membershipKey, InetAddress sourceAddress) {
-        ensureMembershipHandlerExists();
-        multicastMembershipHandler.unblock(membershipKey, sourceAddress);
-    }
-
-    /**
-     * Creates the {@code multicastMembershipHandler} if one doesn't already exist. Callers must
-     * handle synchronization.
-     */
-    private void ensureMembershipHandlerExists() {
-        if (multicastMembershipHandler == null) {
-            multicastMembershipHandler = new MulticastMembershipHandler(this);
-        }
-    }
-
     /*
      * The adapter class of DatagramSocket
      */
diff --git a/luni/src/main/java/java/nio/MembershipKeyImpl.java b/luni/src/main/java/java/nio/MembershipKeyImpl.java
deleted file mode 100644
index 3d7e957..0000000
--- a/luni/src/main/java/java/nio/MembershipKeyImpl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.nio;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.nio.channels.MembershipKey;
-import java.nio.channels.MulticastChannel;
-
-/**
- * An implementation of {@link MembershipKey}.
- *
- * To keep this class simple and keep all mutation operations in one place and easily synchronized,
- * most socket logic is held in {@link java.nio.DatagramChannelImpl}.
- */
-final class MembershipKeyImpl extends MembershipKey {
-
-  private final DatagramChannelImpl channel;
-  private final InetAddress groupAddress;
-  private final NetworkInterface networkInterface;
-  private final InetAddress sourceAddress;
-  private volatile boolean isValid;
-
-  public MembershipKeyImpl(DatagramChannelImpl channel, NetworkInterface networkInterface,
-      InetAddress groupAddress, InetAddress sourceAddress) {
-
-    this.channel = channel;
-    this.networkInterface = networkInterface;
-    this.groupAddress = groupAddress;
-    this.sourceAddress = sourceAddress;
-    this.isValid = true;
-  }
-
-  @Override
-  public boolean isValid() {
-    // invalidate() is called if the key is dropped, but for simplicity it is not
-    // invalidated when the channel is closed. Therefore, the channel must also be checked to see
-    // if it is still open.
-    return isValid && channel.isOpen();
-  }
-
-  void invalidate() {
-    this.isValid = false;
-  }
-
-  @Override
-  public void drop() {
-    channel.multicastDrop(this);
-  }
-
-  @Override
-  public MembershipKey block(InetAddress source) throws IOException {
-    channel.multicastBlock(this, source);
-    return this;
-  }
-
-  @Override
-  synchronized public MembershipKey unblock(InetAddress source) {
-    channel.multicastUnblock(this, source);
-    return this;
-  }
-
-  @Override
-  public MulticastChannel channel() {
-    return channel;
-  }
-
-  @Override
-  public InetAddress group() {
-    return groupAddress;
-  }
-
-  @Override
-  public NetworkInterface networkInterface() {
-    return networkInterface;
-  }
-
-  @Override
-  public InetAddress sourceAddress() {
-    return sourceAddress;
-  }
-
-  @Override
-  public String toString() {
-    return "MembershipKeyImpl{" +
-      "groupAddress=" + groupAddress +
-      ", networkInterface=" + networkInterface +
-      ", sourceAddress=" + sourceAddress +
-      '}';
-    }
-}
diff --git a/luni/src/main/java/java/nio/MulticastMembershipHandler.java b/luni/src/main/java/java/nio/MulticastMembershipHandler.java
deleted file mode 100644
index 2fe8130..0000000
--- a/luni/src/main/java/java/nio/MulticastMembershipHandler.java
+++ /dev/null
@@ -1,495 +0,0 @@
-package java.nio;
-
-import android.system.StructGroupReq;
-import android.system.StructGroupSourceReq;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.nio.channels.MembershipKey;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import libcore.io.IoBridge;
-
-/**
- * A helper class for {@link DatagramChannelImpl} that keeps track of multicast group
- * memberships. This class is not threadsafe, and relies on the DatagramChannelImpl to synchronize.
- *
- * <p>See <a href="http://tools.ietf.org/html/rfc3678">RFC 3678</a> for context and terminology.
- */
-final class MulticastMembershipHandler {
-
-  private final DatagramChannelImpl channel;
-  private final Map<Id, Membership> memberships = new HashMap<Id, Membership>();
-
-  MulticastMembershipHandler(DatagramChannelImpl channel) {
-    this.channel = channel;
-  }
-
-  /**
-   * The implementation for
-   * {@link java.nio.channels.MulticastChannel#join(InetAddress, NetworkInterface)}.
-   */
-  public MembershipKeyImpl addAnySourceMembership(
-      NetworkInterface networkInterface, InetAddress groupAddress) throws SocketException {
-
-    validateMulticastGroupArgs(groupAddress, networkInterface);
-    assertChannelOpen();
-
-    Id id = new Id(networkInterface, groupAddress);
-    Membership membership = memberships.get(id);
-    if (membership != null) {
-      return membership.getAnySourceMembershipKey();
-    }
-
-    // No existing membership found. Attempt to join.
-    StructGroupReq groupReq = makeGroupReq(groupAddress, networkInterface);
-    IoBridge.setSocketOption(channel.getFD(), IoBridge.JAVA_MCAST_JOIN_GROUP, groupReq);
-
-    // Record the membership and return the key.
-    membership = Membership.createAnySource(channel, networkInterface, groupAddress);
-    memberships.put(id, membership);
-    return membership.getAnySourceMembershipKey();
-  }
-
-  /**
-   * The implementation for
-   * {@link java.nio.channels.MulticastChannel#join(InetAddress, NetworkInterface, InetAddress)}.
-   */
-  public MembershipKeyImpl addSourceSpecificMembership(
-      NetworkInterface networkInterface, InetAddress groupAddress, InetAddress sourceAddress)
-      throws SocketException {
-
-    validateMulticastGroupArgs(groupAddress, networkInterface);
-    validateSourceAddress(sourceAddress);
-    validateAddressProtocolTheSame(groupAddress, sourceAddress);
-    assertChannelOpen();
-
-    Id id = new Id(networkInterface, groupAddress);
-    Membership membership = memberships.get(id);
-    if (membership != null) {
-      MembershipKeyImpl existingMembershipKey =
-          membership.getSourceSpecificMembershipKey(sourceAddress);
-      if (existingMembershipKey != null) {
-        return existingMembershipKey;
-      }
-    }
-
-    // No existing membership found. Attempt to join.
-    IoBridge.setSocketOption(channel.getFD(), IoBridge.JAVA_MCAST_JOIN_SOURCE_GROUP,
-        makeGroupSourceReq(groupAddress, networkInterface, sourceAddress));
-
-    if (membership == null) {
-      // Record the membership and return the key.
-      membership = Membership.createSourceSpecific(
-          channel, networkInterface, groupAddress, sourceAddress);
-      memberships.put(id, membership);
-      return membership.getSourceSpecificMembershipKey(sourceAddress);
-    } else {
-      // Add a new source to the existing membership.
-      return membership.addSource(sourceAddress);
-    }
-  }
-
-  /**
-   * The implementation for {@link MembershipKey#drop()}.
-   */
-  public void dropMembership(MembershipKeyImpl membershipKey) {
-    // For compatibility with the RI, this is one case where the membershipKey can no longer be
-    // valid.
-    if (!membershipKey.isValid()) {
-      return;
-    }
-    if (membershipKey.channel() != this.channel) {
-      throw new AssertionError("Bad membership key");
-    }
-    assertChannelOpen();
-
-    Id id = createId(membershipKey);
-    Membership membership = memberships.get(id);
-    if (membership == null) {
-      throw new AssertionError("Bad membership key" + membershipKey);
-    }
-
-    if (!membership.isSourceSpecific()) {
-      try {
-        StructGroupReq groupReq =
-            makeGroupReq(membershipKey.group(), membershipKey.networkInterface());
-        IoBridge.setSocketOption(channel.getFD(), IoBridge.JAVA_MCAST_LEAVE_GROUP, groupReq);
-      } catch (SocketException e) {
-        // TODO: Obtain opinion on how to report this, throw this or if it is safe to ignore.
-        throw new IllegalStateException(e);
-      }
-      memberships.remove(id);
-    } else {
-      StructGroupSourceReq groupSourceReq = makeGroupSourceReq(membershipKey.group(),
-          membershipKey.networkInterface(), membershipKey.sourceAddress());
-
-      try {
-        IoBridge.setSocketOption(
-            channel.getFD(), IoBridge.JAVA_MCAST_LEAVE_SOURCE_GROUP,
-            groupSourceReq);
-      } catch (SocketException e) {
-        // TODO: Obtain opinion on how to report this, throw this or if it is safe to ignore.
-        throw new IllegalStateException(e);
-      }
-
-      boolean isLast = membership.removeSource(membershipKey.sourceAddress());
-      if (isLast) {
-        memberships.remove(id);
-      }
-    }
-    membershipKey.invalidate();
-  }
-
-  /**
-   * The implementation for {@link MembershipKey#block(java.net.InetAddress)}.
-   */
-  public void block(MembershipKeyImpl membershipKey, InetAddress sourceAddress)
-      throws SocketException {
-    validateMembershipKey(membershipKey);
-    validateSourceAddress(sourceAddress);
-    validateAddressProtocolTheSame(membershipKey.group(), sourceAddress);
-    assertChannelOpen();
-
-    Membership membership = getMembershipForKey(membershipKey);
-    if (membership == null) {
-      throw new AssertionError("Bad membership key" + membershipKey);
-    }
-
-    if (membership.isBlocked(sourceAddress)) {
-      return;
-    }
-
-    IoBridge.setSocketOption(channel.getFD(), IoBridge.JAVA_MCAST_BLOCK_SOURCE,
-        makeGroupSourceReq(
-            membershipKey.group(), membershipKey.networkInterface(), sourceAddress));
-
-    membership.block(sourceAddress);
-  }
-
-  /**
-   * The implementation for {@link MembershipKey#unblock(java.net.InetAddress)}.
-   */
-  public void unblock(MembershipKeyImpl membershipKey, InetAddress sourceAddress) {
-    validateMembershipKey(membershipKey);
-    validateSourceAddress(sourceAddress);
-    validateAddressProtocolTheSame(membershipKey.group(), sourceAddress);
-    assertChannelOpen();
-
-    Membership membership = getMembershipForKey(membershipKey);
-    if (membership == null) {
-      throw new AssertionError("Bad membership key" + membershipKey);
-    }
-
-    if (!membership.isBlocked(sourceAddress)) {
-      throw new IllegalStateException(
-          "sourceAddress " + sourceAddress + " is not blocked for " + membership.debugId());
-    }
-
-    try {
-      IoBridge.setSocketOption(channel.getFD(), IoBridge.JAVA_MCAST_UNBLOCK_SOURCE,
-          makeGroupSourceReq(membershipKey.group(), membershipKey.networkInterface(),
-              sourceAddress));
-    } catch (SocketException e) {
-      throw new IllegalStateException(e);
-    }
-
-    membership.unblock(sourceAddress);
-  }
-
-  private Membership getMembershipForKey(MembershipKey membershipKey) {
-    Id id = createId(membershipKey);
-    Membership membership = memberships.get(id);
-    if (membership == null) {
-      throw new AssertionError("No membership found for id " + id);
-    }
-    return membership;
-  }
-
-  private void assertChannelOpen() {
-    if (!channel.isOpen()) {
-      throw new AssertionError("Channel is closed");
-    }
-  }
-
-  private void validateMembershipKey(MembershipKeyImpl membershipKey) {
-    if (membershipKey.channel() != this.channel) {
-      throw new AssertionError("Invalid or bad membership key");
-    }
-    if (!membershipKey.isValid()) {
-      throw new IllegalStateException("Membership key is no longer valid: " + membershipKey);
-    }
-  }
-
-  private static Id createId(MembershipKey membershipKey) {
-    return new Id(membershipKey.networkInterface(), membershipKey.group());
-  }
-
-  private static void validateSourceAddress(InetAddress sourceAddress) {
-    if (sourceAddress.isAnyLocalAddress()) {
-      throw new IllegalArgumentException(
-          "sourceAddress must not be a wildcard address, is " + sourceAddress);
-    }
-    if (sourceAddress.isMulticastAddress()) {
-      throw new IllegalArgumentException(
-          "sourceAddress must be a unicast address, is " + sourceAddress);
-    }
-  }
-
-  private static void validateMulticastGroupArgs(
-      InetAddress groupAddress, NetworkInterface networkInterface) throws SocketException {
-
-    if (groupAddress == null) {
-      // RI throws NullPointerException.
-      throw new NullPointerException("groupAddress == null");
-    }
-    if (networkInterface == null) {
-      // RI throws NullPointerException.
-      throw new NullPointerException("networkInterface == null");
-    }
-    if (!networkInterface.isLoopback() && !networkInterface.supportsMulticast()) {
-      throw new IllegalArgumentException(
-          "networkInterface " + networkInterface + " does not support multicast");
-    }
-    if (!groupAddress.isMulticastAddress()) {
-      throw new IllegalArgumentException("Not a multicast group: " + groupAddress);
-    }
-  }
-
-  private static void validateAddressProtocolTheSame(
-      InetAddress groupAddress, InetAddress sourceAddress) {
-
-    if (groupAddress.getClass() != sourceAddress.getClass()) {
-      throw new IllegalArgumentException("Mixed address types not permitted: groupAddress: " +
-          groupAddress + ", sourceAddress: " + sourceAddress);
-    }
-  }
-
-  private static StructGroupSourceReq makeGroupSourceReq(
-      InetAddress gsr_group, NetworkInterface networkInterface, InetAddress gsr_source) {
-    int gsr_interface = (networkInterface != null) ? networkInterface.getIndex() : 0;
-    return new StructGroupSourceReq(gsr_interface, gsr_group, gsr_source);
-  }
-
-  private static StructGroupReq makeGroupReq(InetAddress gr_group,
-      NetworkInterface networkInterface) {
-    int gr_interface = (networkInterface != null) ? networkInterface.getIndex() : 0;
-    return new StructGroupReq(gr_interface, gr_group);
-  }
-
-  /**
-   * Membership information associated with an {@link Id}. A membership can be one of two types:
-   * "source-specific" and "any-source". The two types a mutually exclusive for a given Id.
-   */
-  static final class Membership {
-
-    private final DatagramChannelImpl channel;
-    private final InetAddress groupAddress;
-    private final NetworkInterface networkInterface;
-
-    // Any-source membership key. Mutually exclusive with sourceSpecificMembershipKeys.
-    private final MembershipKeyImpl anySourceMembershipKey;
-    // Blocked source addresses for any-source memberships. Assigned when required.
-    private Set<InetAddress> blockedSourceAddresses;
-
-    // Source-specific membership keys. Mutually exclusive with anySourceMembershipKey.
-    private final Map<InetAddress, MembershipKeyImpl> sourceSpecificMembershipKeys;
-
-    /** Use {@link #createSourceSpecific} or {@link #createAnySource} to construct. */
-    private Membership(
-        DatagramChannelImpl channel,
-        InetAddress groupAddress,
-        NetworkInterface networkInterface,
-        MembershipKeyImpl anySourceMembershipKey,
-        Map<InetAddress, MembershipKeyImpl> sourceSpecificMembershipKeys) {
-
-      this.channel = channel;
-      this.groupAddress = groupAddress;
-      this.networkInterface = networkInterface;
-      this.anySourceMembershipKey = anySourceMembershipKey;
-      this.sourceSpecificMembershipKeys = sourceSpecificMembershipKeys;
-    }
-
-    /** Creates an any-source membership. */
-    public static Membership createAnySource(DatagramChannelImpl channel,
-        NetworkInterface networkInterface, InetAddress groupAddress) {
-
-      MembershipKeyImpl withoutSourceAddressKey =
-          new MembershipKeyImpl(channel, networkInterface, groupAddress, null /* sourceAddress */);
-      return new Membership(
-          channel, groupAddress, networkInterface, withoutSourceAddressKey,
-          null /* sourceSpecificMembershipKeys */);
-    }
-
-    /**
-     * Creates a source-specific membership. See {@link #addSource} to add additional source
-     * addresses.
-     */
-    public static Membership createSourceSpecific(DatagramChannelImpl channel,
-        NetworkInterface networkInterface, InetAddress groupAddress, InetAddress sourceAddress) {
-
-      Map<InetAddress, MembershipKeyImpl> withSourceKeys =
-          new HashMap<InetAddress, MembershipKeyImpl>();
-      Membership membership = new Membership(
-          channel, groupAddress, networkInterface, null /* anySourceMembershipKey */,
-          withSourceKeys);
-      membership.addSource(sourceAddress);
-      return membership;
-    }
-
-    /**
-     * Adds a new source address filter to an existing membership, returning the associated
-     * {@link MembershipKeyImpl}. Throws an {@code IllegalStateException} if this is an
-     * any-source membership.
-     */
-    public MembershipKeyImpl addSource(InetAddress sourceAddress) {
-      if (sourceSpecificMembershipKeys == null) {
-        throw new IllegalStateException(
-            "Can only add sources to source-specific memberships: " + debugId());
-      }
-
-      MembershipKeyImpl membershipKey =
-          new MembershipKeyImpl(channel, networkInterface, groupAddress, sourceAddress);
-      sourceSpecificMembershipKeys.put(sourceAddress, membershipKey);
-      return membershipKey;
-    }
-
-    /**
-     * Removes the specified {@code sourceAddress} from the set of filters. Returns {@code true} if
-     * the set of filters is now empty. Throws an {@code IllegalStateException} if this is an
-     * any-source membership.
-     */
-    public boolean removeSource(InetAddress sourceAddress) {
-      if (sourceSpecificMembershipKeys == null) {
-        throw new IllegalStateException(
-            "Can only remove sources from source-specific memberships: " + debugId());
-      }
-      sourceSpecificMembershipKeys.remove(sourceAddress);
-      return sourceSpecificMembershipKeys.isEmpty();
-    }
-
-    /**
-     * Returns {@code true} if the membership source-specific, false if it is any-source.
-     */
-    public boolean isSourceSpecific() {
-      return sourceSpecificMembershipKeys != null;
-    }
-
-    /**
-     * Returns the {@link MembershipKeyImpl} for this membership. Throws an
-     * {@code IllegalStateException} if this is not an any-source membership.
-     */
-    public MembershipKeyImpl getAnySourceMembershipKey() {
-      if (sourceSpecificMembershipKeys != null) {
-        throw new IllegalStateException(
-            "There an existing source-specific membership for " + debugId());
-      }
-      return anySourceMembershipKey;
-    }
-
-    /**
-     * Returns the {@link MembershipKeyImpl} for the specified {@code sourceAddress}. Throws an
-     * {@code IllegalStateException} if this is not a source-specific membership.
-     */
-    public MembershipKeyImpl getSourceSpecificMembershipKey(InetAddress sourceAddress) {
-      if (anySourceMembershipKey != null) {
-        throw new IllegalStateException("There an existing any-source membership for " + debugId());
-      }
-      return sourceSpecificMembershipKeys.get(sourceAddress);
-    }
-
-    /**
-     * Returns {@code true} if there is an existing block for the specified address. Throws an
-     * {@code IllegalStateException} if this is not an any-source membership.
-     */
-    public boolean isBlocked(InetAddress sourceAddress) {
-      if (anySourceMembershipKey == null) {
-        throw new IllegalStateException(
-            "block()/unblock() are only applicable for any-source memberships: " + debugId());
-      }
-      return blockedSourceAddresses != null && blockedSourceAddresses.contains(sourceAddress);
-    }
-
-    /**
-     * Adds a blocked address to this membership. Throws an {@code IllegalStateException} if
-     * the address is already blocked. Throws an {@code IllegalStateException} if this is not an
-     * any-source membership.
-     */
-    public void block(InetAddress sourceAddress) {
-      if (anySourceMembershipKey == null) {
-        throw new IllegalStateException(
-            "block() is not supported for source-specific group memberships: " + debugId());
-      }
-      if (blockedSourceAddresses == null) {
-        blockedSourceAddresses = new HashSet<InetAddress>();
-      }
-      if (!blockedSourceAddresses.add(sourceAddress)) {
-        throw new IllegalStateException(
-            "Could not block " + sourceAddress + ": it was already blocked for " + debugId());
-      }
-    }
-
-    /**
-     * Removes a blocked address from this membership. Throws an {@code IllegalStateException} if
-     * the address is not blocked. Throws an {@code IllegalStateException} if this is not an
-     * any-source membership.
-     */
-    public void unblock(InetAddress sourceAddress) {
-      if (anySourceMembershipKey == null) {
-        throw new IllegalStateException(
-            "unblock() is not supported for source-specific group memberships: " + debugId());
-      }
-      if (blockedSourceAddresses == null || !blockedSourceAddresses.remove(sourceAddress)) {
-        throw new IllegalStateException(
-            "Could not unblock " + sourceAddress + ": it was not blocked for " + debugId());
-      }
-    }
-
-    public String debugId() {
-      return "<" + networkInterface + ":" + groupAddress + ">";
-    }
-
-  }
-
-  /** An identifier for a multicast group membership, independent of membership type. */
-  private static final class Id {
-
-    private final InetAddress groupAddress;
-    private final NetworkInterface networkInterface;
-
-    public Id(NetworkInterface networkInterface, InetAddress groupAddress) {
-      this.groupAddress = groupAddress;
-      this.networkInterface = networkInterface;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (!(o instanceof Id)) {
-        return false;
-      }
-
-      Id id = (Id) o;
-
-      if (!groupAddress.equals(id.groupAddress)) {
-        return false;
-      }
-      if (!networkInterface.equals(id.networkInterface)) {
-        return false;
-      }
-
-      return true;
-    }
-
-    @Override
-    public int hashCode() {
-      int result = groupAddress.hashCode();
-      result = 31 * result + networkInterface.hashCode();
-      return result;
-    }
-  }
-}
diff --git a/luni/src/main/java/java/nio/NioUtils.java b/luni/src/main/java/java/nio/NioUtils.java
index 51adddb..f2a0b10 100644
--- a/luni/src/main/java/java/nio/NioUtils.java
+++ b/luni/src/main/java/java/nio/NioUtils.java
@@ -19,8 +19,6 @@
 import java.io.Closeable;
 import java.io.FileDescriptor;
 import java.io.IOException;
-import java.net.SocketOption;
-import java.net.StandardSocketOptions;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.FileChannel;
 import java.util.Set;
@@ -68,66 +66,4 @@
     public static int unsafeArrayOffset(ByteBuffer b) {
         return ((ByteArrayBuffer) b).arrayOffset;
     }
-
-    /**
-     * Sets the supplied option on the channel to have the value if option is a member of
-     * allowedOptions.
-     *
-     * @throws IOException
-     *          if the value could not be set due to IO errors.
-     * @throws IllegalArgumentException
-     *          if the socket option or the value is invalid.
-     * @throws UnsupportedOperationException
-     *          if the option is not a member of allowedOptions.
-     * @throws ClosedChannelException
-     *          if the channel is closed
-     */
-    public static <T> void setSocketOption(
-            FileDescriptorChannel channel, Set<SocketOption<?>> allowedOptions,
-            SocketOption<T> option, T value)
-            throws IOException {
-
-        if (!(option instanceof StandardSocketOptions.SocketOptionImpl)) {
-            throw new IllegalArgumentException("SocketOption must come from StandardSocketOptions");
-        }
-        if (!allowedOptions.contains(option)) {
-            throw new UnsupportedOperationException(
-                    option + " is not supported for this type of socket");
-        }
-        if (!channel.getFD().valid()) {
-            throw new ClosedChannelException();
-        }
-        ((StandardSocketOptions.SocketOptionImpl<T>) option).setValue(channel.getFD(), value);
-    }
-
-    /**
-     * Gets the supplied option from the channel if option is a member of allowedOptions.
-     *
-     * @throws IOException
-     *          if the value could not be read due to IO errors.
-     * @throws IllegalArgumentException
-     *          if the socket option is invalid.
-     * @throws UnsupportedOperationException
-     *          if the option is not a member of allowedOptions.
-     * @throws ClosedChannelException
-     *          if the channel is closed
-     */
-    public static <T> T getSocketOption(
-            FileDescriptorChannel channel, Set<SocketOption<?>> allowedOptions,
-            SocketOption<T> option)
-            throws IOException {
-
-        if (!(option instanceof StandardSocketOptions.SocketOptionImpl)) {
-            throw new IllegalArgumentException("SocketOption must come from StandardSocketOptions");
-        }
-        if (!allowedOptions.contains(option)) {
-            throw new UnsupportedOperationException(
-                    option + " is not supported for this type of socket");
-        }
-        if (!channel.getFD().valid()) {
-            throw new ClosedChannelException();
-        }
-        return ((StandardSocketOptions.SocketOptionImpl<T>) option).getValue(channel.getFD());
-    }
-
 }
diff --git a/luni/src/main/java/java/nio/ServerSocketChannelImpl.java b/luni/src/main/java/java/nio/ServerSocketChannelImpl.java
index d2cbf36..7185c32 100644
--- a/luni/src/main/java/java/nio/ServerSocketChannelImpl.java
+++ b/luni/src/main/java/java/nio/ServerSocketChannelImpl.java
@@ -24,10 +24,7 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketAddress;
-import java.net.SocketOption;
 import java.net.SocketTimeoutException;
-import java.net.StandardSocketOptions;
-import java.nio.channels.AlreadyBoundException;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.IllegalBlockingModeException;
 import java.nio.channels.NotYetBoundException;
@@ -60,56 +57,6 @@
 
     /** @hide Until ready for a public API change */
     @Override
-    public final ServerSocketChannel bind(SocketAddress localAddr, int backlog) throws IOException {
-        if (!isOpen()) {
-            throw new ClosedChannelException();
-        }
-        if (socket.isBound()) {
-            throw new AlreadyBoundException();
-        }
-        if (localAddr != null) {
-            if (!(localAddr instanceof InetSocketAddress)) {
-                throw new UnsupportedAddressTypeException();
-            }
-            InetSocketAddress localInetAddress = (InetSocketAddress) localAddr;
-            if (localInetAddress.isUnresolved()) {
-                throw new UnresolvedAddressException();
-            }
-        }
-
-        socket.bind(localAddr, backlog);
-        return this;
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public SocketAddress getLocalAddress() throws IOException {
-        if (!isOpen()) {
-            throw new ClosedChannelException();
-        }
-        return socket.getLocalSocketAddress();
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> T getOption(SocketOption<T> option) throws IOException {
-        return NioUtils.getSocketOption(this, StandardSocketOptions.SERVER_SOCKET_OPTIONS, option);
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> ServerSocketChannel setOption(SocketOption<T> option, T value) throws IOException {
-        NioUtils.setSocketOption(this, StandardSocketOptions.SERVER_SOCKET_OPTIONS, option, value);
-        return this;
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public Set<SocketOption<?>> supportedOptions() {
-        return StandardSocketOptions.SERVER_SOCKET_OPTIONS;
-    }
-
-    @Override
     public SocketChannel accept() throws IOException {
         if (!isOpen()) {
             throw new ClosedChannelException();
diff --git a/luni/src/main/java/java/nio/SocketChannelImpl.java b/luni/src/main/java/java/nio/SocketChannelImpl.java
index 7c3cd78..d5cb716c 100644
--- a/luni/src/main/java/java/nio/SocketChannelImpl.java
+++ b/luni/src/main/java/java/nio/SocketChannelImpl.java
@@ -32,10 +32,7 @@
 import java.net.Socket;
 import java.net.SocketAddress;
 import java.net.SocketException;
-import java.net.SocketOption;
 import java.net.SocketUtils;
-import java.net.StandardSocketOptions;
-import java.nio.channels.AlreadyBoundException;
 import java.nio.channels.AlreadyConnectedException;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.ConnectionPendingException;
@@ -139,31 +136,6 @@
         return socket;
     }
 
-    /** @hide Until ready for a public API change */
-    @Override
-    synchronized public final SocketChannel bind(SocketAddress local) throws IOException {
-        if (!isOpen()) {
-            throw new ClosedChannelException();
-        }
-        if (isBound) {
-            throw new AlreadyBoundException();
-        }
-
-        if (local == null) {
-            local = new InetSocketAddress(Inet4Address.ANY, 0);
-        } else if (!(local instanceof InetSocketAddress)) {
-            throw new UnsupportedAddressTypeException();
-        }
-
-        InetSocketAddress localAddress = (InetSocketAddress) local;
-        if (localAddress.isUnresolved()) {
-            throw new UnresolvedAddressException();
-        }
-        IoBridge.bind(fd, localAddress.getAddress(), localAddress.getPort());
-        onBind(true /* updateSocketState */);
-        return this;
-    }
-
     /**
      * Initialise the isBound, localAddress and localPort state from the file descriptor. Used when
      * some or all of the bound state has been left to the OS to decide, or when the Socket handled
@@ -189,34 +161,6 @@
         }
     }
 
-    /** @hide Until ready for a public API change */
-    @Override
-    synchronized public SocketAddress getLocalAddress() throws IOException {
-        if (!isOpen()) {
-            throw new ClosedChannelException();
-        }
-        return isBound ? new InetSocketAddress(localAddress, localPort) : null;
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> T getOption(SocketOption<T> option) throws IOException {
-        return NioUtils.getSocketOption(this, StandardSocketOptions.SOCKET_OPTIONS, option);
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> SocketChannel setOption(SocketOption<T> option, T value) throws IOException {
-        NioUtils.setSocketOption(this, StandardSocketOptions.SOCKET_OPTIONS, option, value);
-        return this;
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public Set<SocketOption<?>> supportedOptions() {
-        return StandardSocketOptions.SOCKET_OPTIONS;
-    }
-
     @Override
     synchronized public boolean isConnected() {
         return status == SOCKET_STATUS_CONNECTED;
diff --git a/luni/src/main/java/java/nio/channels/AlreadyBoundException.java b/luni/src/main/java/java/nio/channels/AlreadyBoundException.java
deleted file mode 100644
index 0a35fc3..0000000
--- a/luni/src/main/java/java/nio/channels/AlreadyBoundException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.nio.channels;
-
-/**
- * An {@code AlreadyBoundException} is thrown when an attempt is made to bind a NetworkChannel that
- * is already bound.
- *
- * @hide Until ready for a public API change
- */
-public class AlreadyBoundException extends IllegalStateException {
-
-  private static final long serialVersionUID = 6796072983322737592L;
-
-  public AlreadyBoundException() {
-  }
-}
diff --git a/luni/src/main/java/java/nio/channels/DatagramChannel.java b/luni/src/main/java/java/nio/channels/DatagramChannel.java
index 3a5d1cc..2cff7f0 100644
--- a/luni/src/main/java/java/nio/channels/DatagramChannel.java
+++ b/luni/src/main/java/java/nio/channels/DatagramChannel.java
@@ -22,7 +22,6 @@
 import java.net.InetAddress;
 import java.net.NetworkInterface;
 import java.net.SocketAddress;
-import java.net.SocketOption;
 import java.nio.ByteBuffer;
 import java.nio.channels.spi.AbstractSelectableChannel;
 import java.nio.channels.spi.SelectorProvider;
@@ -44,7 +43,7 @@
  * same time.
  */
 public abstract class DatagramChannel extends AbstractSelectableChannel
-        implements ByteChannel, ScatteringByteChannel, GatheringByteChannel, MulticastChannel {
+        implements ByteChannel, ScatteringByteChannel, GatheringByteChannel {
 
     /**
      * Constructs a new {@code DatagramChannel}.
@@ -92,64 +91,6 @@
      */
     public abstract DatagramSocket socket();
 
-    /** @hide Until ready for a public API change */
-    @Override
-    public DatagramChannel bind(SocketAddress local) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public SocketAddress getLocalAddress() throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> T getOption(SocketOption<T> option) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> DatagramChannel setOption(SocketOption<T> option, T value) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public Set<SocketOption<?>> supportedOptions() {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public MembershipKey join(InetAddress groupAddress, NetworkInterface networkInterface)
-            throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public MembershipKey join(InetAddress groupAddress, NetworkInterface networkInterface,
-            InetAddress sourceAddress) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
     /**
      * Returns whether this channel's socket is connected or not.
      *
diff --git a/luni/src/main/java/java/nio/channels/FileChannel.java b/luni/src/main/java/java/nio/channels/FileChannel.java
index e5f2862c..d6c140b 100644
--- a/luni/src/main/java/java/nio/channels/FileChannel.java
+++ b/luni/src/main/java/java/nio/channels/FileChannel.java
@@ -76,9 +76,8 @@
  * stream and vice versa; this includes modifications to the file position,
  * content, size, etc.
  */
-// TODO: Remove ByteChannel when SeekableByteChannel is unhidden.
 public abstract class FileChannel extends AbstractInterruptibleChannel
-        implements GatheringByteChannel, ScatteringByteChannel, ByteChannel, SeekableByteChannel {
+        implements ByteChannel, GatheringByteChannel, ScatteringByteChannel {
 
     /**
      * {@code MapMode} defines file mapping mode constants.
@@ -282,21 +281,65 @@
             long position, long size) throws IOException;
 
     /**
-     * {@inheritDoc}
+     * Returns the current position as a positive integer number of bytes from
+     * the start of the file.
+     *
+     * @throws ClosedChannelException
+     *             if this channel is closed.
+     * @throws IOException
+     *             if another I/O error occurs.
      */
-    @Override
     public abstract long position() throws IOException;
 
     /**
-     * {@inheritDoc}
+     * Sets the file position pointer to a new value.
+     * <p>
+     * The argument is the number of bytes counted from the start of the file.
+     * The position cannot be set to a value that is negative. The new position
+     * can be set beyond the current file size. If set beyond the current file
+     * size, attempts to read will return end of file. Write operations will
+     * succeed but they will fill the bytes between the current end of file and
+     * the new position with the required number of (unspecified) byte values.
+     *
+     * @return this.
+     * @throws IllegalArgumentException
+     *             if the new position is negative.
+     * @throws ClosedChannelException
+     *             if this channel is closed.
+     * @throws IOException
+     *             if another I/O error occurs.
      */
-    @Override
     public abstract FileChannel position(long newPosition) throws IOException;
 
     /**
-     * {@inheritDoc}
+     * Reads bytes from this file channel into the given buffer.
+     * <p>
+     * The maximum number of bytes that will be read is the remaining number of
+     * bytes in the buffer when the method is invoked. The bytes will be copied
+     * into the buffer starting at the buffer's current position.
+     * <p>
+     * The call may block if other threads are also attempting to read from this
+     * channel.
+     * <p>
+     * Upon completion, the buffer's position is set to the end of the bytes
+     * that have been read. The buffer's limit is not changed.
+     *
+     * @param buffer
+     *            the byte buffer to receive the bytes.
+     * @return the number of bytes actually read.
+     * @throws AsynchronousCloseException
+     *             if another thread closes the channel during the read.
+     * @throws ClosedByInterruptException
+     *             if another thread interrupts the calling thread during the
+     *             read.
+     * @throws ClosedChannelException
+     *             if this channel is closed.
+     * @throws IOException
+     *             if another I/O error occurs, details are in the message.
+     * @throws NonReadableChannelException
+     *             if the channel has not been opened in a mode that permits
+     *             reading.
      */
-    @Override
     public abstract int read(ByteBuffer buffer) throws IOException;
 
     /**
@@ -411,9 +454,13 @@
             throws IOException;
 
     /**
-     * {@inheritDoc}
+     * Returns the size of the file underlying this channel in bytes.
+     *
+     * @throws ClosedChannelException
+     *             if this channel is closed.
+     * @throws IOException
+     *             if an I/O error occurs while getting the size of the file.
      */
-    @Override
     public abstract long size() throws IOException;
 
     /**
@@ -491,9 +538,25 @@
             WritableByteChannel target) throws IOException;
 
     /**
-     * {@inheritDoc}
+     * Truncates the file underlying this channel to a given size. Any bytes
+     * beyond the given size are removed from the file. If there are no bytes
+     * beyond the given size then the file contents are unmodified.
+     * <p>
+     * If the file position is currently greater than the given size, then it is
+     * set to the new size.
+     *
+     * @param size
+     *            the maximum size of the underlying file.
+     * @throws IllegalArgumentException
+     *             if the requested size is negative.
+     * @throws ClosedChannelException
+     *             if this channel is closed.
+     * @throws NonWritableChannelException
+     *             if the channel cannot be written to.
+     * @throws IOException
+     *             if another I/O error occurs.
+     * @return this channel.
      */
-    @Override
     public abstract FileChannel truncate(long size) throws IOException;
 
     /**
@@ -554,9 +617,30 @@
             throws IOException;
 
     /**
-     * {@inheritDoc}
+     * Writes bytes from the given byte buffer to this file channel.
+     * <p>
+     * The bytes are written starting at the current file position, and after
+     * some number of bytes are written (up to the remaining number of bytes in
+     * the buffer) the file position is increased by the number of bytes
+     * actually written.
+     *
+     * @param src
+     *            the byte buffer containing the bytes to be written.
+     * @return the number of bytes actually written.
+     * @throws NonWritableChannelException
+     *             if the channel was not opened for writing.
+     * @throws ClosedChannelException
+     *             if the channel was already closed.
+     * @throws AsynchronousCloseException
+     *             if another thread closes the channel during the write.
+     * @throws ClosedByInterruptException
+     *             if another thread interrupts the calling thread while this
+     *             operation is in progress. The interrupt state of the calling
+     *             thread is set and the channel is closed.
+     * @throws IOException
+     *             if another I/O error occurs, details are in the message.
+     * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)
      */
-    @Override
     public abstract int write(ByteBuffer src) throws IOException;
 
     /**
diff --git a/luni/src/main/java/java/nio/channels/FileLock.java b/luni/src/main/java/java/nio/channels/FileLock.java
index 037537c..5b26475 100644
--- a/luni/src/main/java/java/nio/channels/FileLock.java
+++ b/luni/src/main/java/java/nio/channels/FileLock.java
@@ -114,17 +114,6 @@
     }
 
     /**
-     * Returns the {@link Channel} that holds this lock.
-     *
-     * @since 1.7
-     * @hide Until ready for an API update
-     */
-    // TODO: unhiding, add to channel():  This method has been superseded by {@link #acquiredBy()}.
-    public Channel acquiredBy() {
-        return channel;
-    }
-
-    /**
      * Returns the lock's starting position in the file.
      *
      * @return the lock position.
diff --git a/luni/src/main/java/java/nio/channels/MembershipKey.java b/luni/src/main/java/java/nio/channels/MembershipKey.java
deleted file mode 100644
index 18ff92d..0000000
--- a/luni/src/main/java/java/nio/channels/MembershipKey.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.nio.channels;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-
-/**
- * A token produced as the result of joining a multicast group with
- * {@link DatagramChannel#join(java.net.InetAddress, java.net.NetworkInterface)} or
- * {@link DatagramChannel#join(java.net.InetAddress, java.net.NetworkInterface,
- * java.net.InetAddress)}.
- *
- * <p>A multicast group membership can be source-specific or any-source. Source-specific memberships
- * only allow datagrams from a single source address to be received. Any-source memberships
- * initially allow datagrams from any source address to be received, but may have individual unicast
- * IP addresses blocked via {@link #block(java.net.InetAddress)}. Any-source membership keys return
- * {@code null} from {@link #sourceAddress()}.
- *
- * <p>See <a href="http://tools.ietf.org/html/rfc3678">RFC 3678: Socket Interface Extensions for
- * Multicast Source Filters</a> for concepts and terminology associated with multicast membership.
- *
- * @since 1.7
- * @hide Until ready for a public API change
- */
-public abstract class MembershipKey {
-
-  protected MembershipKey() {}
-
-  /**
-   * Returns {@code true} until the membership is dropped with {@link #drop()} or the associated
-   * channel is closed.
-   */
-  public abstract boolean isValid();
-
-  /**
-   * Drops this membership from the multicast group, invalidating this key.
-   */
-  public abstract void drop();
-
-  /**
-   * Blocks datagrams from the specified source address; after this call any datagrams received from
-   * the address will be discarded. Blocking an already-blocked source address has no effect. A
-   * blocked address can be unblocked by calling {@link #unblock(java.net.InetAddress)}.
-   *
-   * <p>The block may not take effect instantaneously: datagrams that are already buffered by the
-   * underlying OS may still be delivered.
-   *
-   * <p>There is an OS-level limit on the number of source addresses that can be block for a given
-   * {@code groupAddress}, {@code networkInterface} pair. This is typically 10. Attempts to add
-   * more than this result in a {@code SocketException}.
-   *
-   * <p>If this membership key is source-specific an {@link IllegalStateException} is thrown.
-   *
-   * @throws IllegalStateException
-   *         if this membership key is no longer valid or is of the wrong type
-   * @throws IllegalArgumentException
-   *         if the source address is not unicast address of the same type as the multicast group
-   *         address supplied when the group was joined
-   * @throws IOException
-   *         if an I/O error occurs.
-   */
-  public abstract MembershipKey block(InetAddress source) throws IOException;
-
-  /**
-   * Unblocks datagrams from the specified source address that were previously blocked with a call
-   * to {@link #block(java.net.InetAddress)}; after this call any datagrams received from the
-   * address will be received. Unblocking an address that is not currently blocked throws an
-   * {@code IllegalStateException}.
-   *
-   * <p>If this membership key is source-specific an {@link IllegalStateException} is thrown.
-   *
-   * @throws IllegalStateException
-   *         if this membership key is no longer valid or is of the wrong type, or the address is
-   *         not currently blocked
-   * @throws IllegalArgumentException
-   *         if the source address is not unicast address of the same type as the multicast group
-   *         address supplied when the group was joined
-   */
-  public abstract MembershipKey unblock(InetAddress source);
-
-  /**
-   * Returns the {@code MulticastChannel} associated with this key. Continues returning the value
-   * even when the key has been invalidated.
-   */
-  public abstract MulticastChannel channel();
-
-  /**
-   * Returns the multicast group address associated with this key. Continues returning the value
-   * even when the key has been invalidated.
-   */
-  public abstract InetAddress group();
-
-  /**
-   * Returns the network interface associated with this key. Continues returning the value
-   * even when the key has been invalidated.
-   */
-  public abstract NetworkInterface networkInterface();
-
-  /**
-   * Returns the source address associated with this key if the membership is source-specific.
-   * Returns {@code null} if the membership is any-source. Continues returning the value
-   * even when the key has been invalidated.
-   */
-  public abstract InetAddress sourceAddress();
-}
diff --git a/luni/src/main/java/java/nio/channels/MulticastChannel.java b/luni/src/main/java/java/nio/channels/MulticastChannel.java
deleted file mode 100644
index 41ef501..0000000
--- a/luni/src/main/java/java/nio/channels/MulticastChannel.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.nio.channels;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-
-/**
- * A type of {@link NetworkChannel} that supports IP multicasting. IP multicasting allows for
- * efficient routing of an IP datagram to multiple hosts. Hosts wishing to receive multicast
- * datagrams join a multicast group identified by a multicast IP address.
- *
- * <p>Any datagram socket can be used to <em>send</em> to a multicast group: senders <em>do not</em>
- * have to be a member of the group.
- *
- * <p>See <a href="http://www.ietf.org/rfc/rfc2236.txt">RFC 2236: Internet Group Management
- * Protocol, Version 2</a> and <a href="http://www.ietf.org/rfc/rfc3376.txt">RFC 3376: Internet
- * Group Management Protocol, Version 3</a> for network-level information regarding IPv4 group
- * membership. See <a href="http://www.ietf.org/rfc/rfc2710.txt">RFC 2710: Multicast Listener
- * Discovery (MLD) for IPv6</a> and <a href="http://www.ietf.org/rfc/rfc3810.txt">RFC 3810:
- * Multicast Listener Discovery Version 2 (MLDv2) for IPv6</a> for equivalent IPv6 information.
- *
- * <p>See <a href="http://tools.ietf.org/html/rfc3678">RFC 3678: Socket Interface Extensions for
- * Multicast Source Filters</a> for concepts and terminology associated with multicast membership.
- *
- * <p>IP multicast requires support from network infrastructure; networks may not support
- * all features of IP multicast.
- *
- * <p>A channel can be restricted to send multicast datagrams through a specific
- * {@link NetworkInterface} by using {@link #setOption(java.net.SocketOption, Object)} with
- * {@link java.net.StandardSocketOptions#IP_MULTICAST_IF}.
- *
- * <p>A channel may or may not receive multicast datagrams sent from this host, determined by the
- * {@link java.net.StandardSocketOptions#IP_MULTICAST_LOOP} option.
- *
- * <p>The time-to-live for multicast datagrams can be set using the
- * {@link java.net.StandardSocketOptions#IP_MULTICAST_TTL} option.
- *
- * <p>Usually multicast channels should have {@link java.net.StandardSocketOptions#SO_REUSEADDR}
- * set to {@code true} before binding to enable multiple sockets on this host to be members of
- * the same multicast group.
- *
- * <p>Typically multicast channels are {@link NetworkChannel#bind bound} to a wildcard address
- * such as "0.0.0.0" (IPv4) or "::" (IPv6). They may also be bound to a multicast group address.
- * Binding to a multicast group address restricts datagrams received to only those sent to the
- * multicast group. When the wildcard address is used the socket may join multiple groups and also
- * receive non-multicast datagrams sent directly to the host. The port the channel is bound to is
- * important: only datagrams sent to the group on that port will be received.
- *
- * <p>Having bound a channel, the group can be joined. Memberships are either "any-source" or
- * "source-specific". The type of membership is determined by the variant of {@code join} that is
- * used. See {@link #join(java.net.InetAddress, java.net.NetworkInterface)} and
- * {@link #join(java.net.InetAddress, java.net.NetworkInterface, java.net.InetAddress)} for more
- * information.
- *
- * @since 1.7
- * @hide Until ready for a public API change
- */
-public interface MulticastChannel extends NetworkChannel {
-
-  // @hide Until ready for a public API change
-  // /**
-  //  * {@inheritDoc}
-  //  *
-  //  * If the channel is currently part of one or more multicast groups then the memberships are
-  // * dropped and any associated {@code MembershipKey} objects are invalidated.
-  // */
-  void close() throws IOException;
-
-  /**
-   * Creates an any-source membership to the {@code groupAddress} on the specified
-   * {@code networkInterface}. Returns a {@code MembershipKey} that can be used to modify or
-   * {@link MembershipKey#drop()} the membership. See {@link MembershipKey#block(InetAddress)} and
-   * {@link MembershipKey#unblock(InetAddress)} for methods to modify source-address
-   * filtering.
-   *
-   * <p>A channel may join several groups. Each membership is network interface-specific: an
-   * application must join the group for each applicable network interface to receive datagrams.
-   *
-   * <p>Any-source and source-specific memberships cannot be mixed for a group address on a given
-   * network interface. An {@code IllegalStateException} will be thrown if joins of different types
-   * are attempted for a given {@code groupAddress}, {@code networkInterface} pair. Joining a
-   * multicast group with the same arguments as an existing, valid membership returns the same
-   * {@code MembershipKey}.
-   *
-   * <p>There is an OS-level limit on the number of multicast groups a process can join.
-   * This is typically 20. Attempts to join more than this result in a {@code SocketException}.
-   *
-   * @param groupAddress the multicast group address to join
-   * @param networkInterface the network address to join with
-   * @throws IllegalArgumentException
-   *         if the group address is not a multicast address or the network interface does not
-   *         support multicast
-   * @throws IllegalStateException
-   *         if the channel already has a source-specific membership for the group/network interface
-   * @throws ClosedChannelException
-   *         if the channel is closed
-   * @throws IOException
-   *         if some other I/O error occurs
-   * @hide Until ready for a public API change
-   */
-  MembershipKey join(InetAddress groupAddress, NetworkInterface networkInterface)
-      throws IOException;
-
-  /**
-   * Creates a source-specific membership to the {@code groupAddress} on the specified
-   * {@code networkInterface} filtered by the {@code sourceAddress}. Returns a
-   * {@code MembershipKey} that can be used to {@link MembershipKey#drop()} the membership.
-   *
-   * <p>A channel may join several groups. Each membership is network interface-specific: an
-   * application must join the group for each applicable network interface to receive datagrams.
-   *
-   * <p>Any-source and source-specific memberships cannot be mixed for a group address on a given
-   * network interface. An {@code IllegalStateException} will be thrown if joins of different types
-   * are attempted for a given {@code groupAddress}, {@code networkInterface} pair. Joining a
-   * multicast group with the same arguments as an existing, valid membership returns the same
-   * {@code MembershipKey}.
-   *
-   * <p>There is an OS-level limit on the number of multicast groups a process can join.
-   * This is typically 20. Attempts to join more than this result in a {@code SocketException}.
-   *
-   * <p>There is an OS-level limit on the number of source addresses that can be joined for a given
-   * {@code groupAddress}, {@code networkInterface} pair. This is typically 10. Attempts to add
-   * more than this result in a {@code SocketException}.
-   *
-   * @param groupAddress the multicast group address to join
-   * @param networkInterface the network address to join with
-   * @param sourceAddress the source address to restrict datagrams to
-   * @throws IllegalArgumentException
-   *         if the group address is not a multicast address, the network interface does not
-   *         support multicast, or the {@code groupAddress} and {@code sourceAddress} are not of
-   *         compatible types
-   * @throws IllegalStateException
-   *         if the channel already has a source-specific membership for the group/network interface
-   * @throws ClosedChannelException
-   *         if the channel is closed
-   * @throws IOException
-   *         if some other I/O error occurs
-   * @hide Until ready for a public API change
-   */
-  MembershipKey join(
-      InetAddress groupAddress, NetworkInterface networkInterface, InetAddress sourceAddress)
-      throws IOException;
-
-}
diff --git a/luni/src/main/java/java/nio/channels/NetworkChannel.java b/luni/src/main/java/java/nio/channels/NetworkChannel.java
deleted file mode 100644
index 9b46e30..0000000
--- a/luni/src/main/java/java/nio/channels/NetworkChannel.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.nio.channels;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.net.SocketAddress;
-import java.net.SocketOption;
-import java.util.Set;
-
-/**
- * A common interface for channels that are backed by network sockets.
- *
- * @since 1.7
- * @hide Until ready for a public API change
- */
-public interface NetworkChannel extends AutoCloseable, Channel, Closeable {
-
-  /**
-   * Binds this channel to the given local socket address. If the {@code localAddr} is set
-   * to {@code null} the socket will be bound to an available local address on any free port of
-   * the system.
-   *
-   * @param local
-   *     the local machine address and port to bind on.
-   * @return this channel.
-   * @throws UnsupportedAddressTypeException
-   *     if the {@code SocketAddress} is not supported.
-   * @throws ClosedChannelException
-   *     if the channel is closed.
-   * @throws AlreadyBoundException
-   *     if the channel is already bound.
-   * @throws IOException
-   *     if another I/O error occurs.
-   * @hide Until ready for a public API change
-   */
-  NetworkChannel bind(SocketAddress local) throws IOException;
-
-  /**
-   * Returns the local socket address the channel is bound to. The socket may be bound explicitly
-   * via {@link #bind(java.net.SocketAddress)} or similar methods, or as a side-effect when other
-   * methods are called, depending on the implementation. If the channel is not bound {@code null}
-   * is returned.
-   *
-   * <p>If IP is being used, the returned object will be a subclass of
-   * {@link java.net.InetSocketAddress}
-   *
-   * @return the local socket address, or {@code null} if the socket is not bound
-   * @throws ClosedChannelException
-   *     if the channel is closed.
-   * @throws IOException
-   *     if another I/O error occurs.
-   * @hide Until ready for a public API change
-   */
-  SocketAddress getLocalAddress() throws IOException;
-
-  /**
-   * Returns the value for the socket option.
-   *
-   * @throws UnsupportedOperationException
-   *     if the option is not supported by the socket.
-   * @throws java.nio.channels.ClosedChannelException
-   *     if the socket is closed
-   * @throws IOException
-   *     if the value cannot be read.
-   * @hide Until ready for a public API change
-   * @see java.net.StandardSocketOptions
-   */
-  <T> T getOption(SocketOption<T> option) throws IOException;
-
-  /**
-   * Sets the value for the socket option.
-   *
-   * @return this NetworkChannel
-   * @throws UnsupportedOperationException
-   *     if the option is not supported by the socket.
-   * @throws IllegalArgumentException
-   *     if the value is not valid for the option.
-   * @throws java.nio.channels.ClosedChannelException
-   *     if the socket is closed
-   * @throws IOException
-   *     if the value cannot be written.
-   * @hide Until ready for a public API change
-   * @see java.net.StandardSocketOptions
-   */
-  <T> NetworkChannel setOption(SocketOption<T> option, T value) throws IOException;
-
-  /**
-   * Returns the set of socket options supported by this channel.
-   *
-   * @hide Until ready for a public API change
-   */
-  Set<SocketOption<?>> supportedOptions();
-}
diff --git a/luni/src/main/java/java/nio/channels/SeekableByteChannel.java b/luni/src/main/java/java/nio/channels/SeekableByteChannel.java
deleted file mode 100644
index f4d6beb..0000000
--- a/luni/src/main/java/java/nio/channels/SeekableByteChannel.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.nio.channels;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * An interface for channels that keep a pointer to a current position within an underlying
- * byte-based data source such as a file.
- *
- * <p>SeekableByteChannels have a pointer into the underlying data source which is referred to as a
- * <em>position</em>. The position can be manipulated by moving it within the data source, and the
- * current position can be queried.
- *
- * <p>SeekableByteChannels also have an associated <em>size</em>. The size of the channel is the
- * number of bytes that the data source currently contains. The size of the data source can be
- * manipulated by adding more bytes to the end or by removing bytes from the end. See
- * {@link #truncate}, {@link #position} and {@link #write} for details. The current size can also
- * be queried.
- *
- * @hide Until ready for a public API change
- * @since 1.7
- */
-public interface SeekableByteChannel extends ByteChannel {
-
-  /**
-   * Returns the current position as a positive number of bytes from the start of the underlying
-   * data source.
-   *
-   * @throws ClosedChannelException
-   *     if this channel is closed.
-   * @throws IOException
-   *     if another I/O error occurs.
-   */
-  long position() throws IOException;
-
-  /**
-   * Sets the channel's position to {@code newPosition}.
-   *
-   * <p>The argument is the number of bytes counted from the start of the data source. The position
-   * cannot be set to a value that is negative. The new position can be set beyond the current
-   * size. If set beyond the current size, attempts to read will return end-of-file. Write
-   * operations will succeed but they will fill the bytes between the current end of the data
-   * source
-   * and the new position with the required number of (unspecified) byte values.
-   *
-   * @return the channel.
-   * @throws IllegalArgumentException
-   *     if the new position is negative.
-   * @throws ClosedChannelException
-   *     if this channel is closed.
-   * @throws IOException
-   *     if another I/O error occurs.
-   */
-  SeekableByteChannel position(long newPosition) throws IOException;
-
-  /**
-   * Returns the size of the data source underlying this channel in bytes.
-   *
-   * @throws ClosedChannelException
-   *     if this channel is closed.
-   * @throws IOException
-   *     if an I/O error occurs.
-   */
-  long size() throws IOException;
-
-  /**
-   * Truncates the data source underlying this channel to a given size. Any bytes beyond the given
-   * size are removed. If there are no bytes beyond the given size then the contents are
-   * unmodified.
-   *
-   * <p>If the position is currently greater than the given size, then it is set to the new size.
-   *
-   * @return this channel.
-   * @throws IllegalArgumentException
-   *     if the requested size is negative.
-   * @throws ClosedChannelException
-   *     if this channel is closed.
-   * @throws NonWritableChannelException
-   *     if the channel cannot be written to.
-   * @throws IOException
-   *     if another I/O error occurs.
-   */
-  SeekableByteChannel truncate(long size) throws IOException;
-
-  /**
-   * Writes bytes from the given byte buffer to this channel.
-   *
-   * <p>The bytes are written starting at the channel's current position, and after some number of
-   * bytes are written (up to the {@link java.nio.Buffer#remaining() remaining} number of bytes in
-   * the buffer) the channel's position is increased by the number of bytes actually written.
-   *
-   * <p>If the channel's position is beyond the current end of the underlying data source, then the
-   * data source is first extended up to the given position by the required number of unspecified
-   * byte values.
-   *
-   * @param buffer
-   *     the byte buffer containing the bytes to be written.
-   * @return the number of bytes actually written.
-   * @throws NonWritableChannelException
-   *     if the channel was not opened for writing.
-   * @throws ClosedChannelException
-   *     if the channel was already closed.
-   * @throws AsynchronousCloseException
-   *     if another thread closes the channel during the write.
-   * @throws ClosedByInterruptException
-   *     if another thread interrupts the calling thread while this operation is in progress. The
-   *     interrupt state of the calling thread is set and the channel is closed.
-   * @throws IOException
-   *     if another I/O error occurs, details are in the message.
-   */
-  @Override
-  int write(ByteBuffer buffer) throws IOException;
-
-  /**
-   * Reads bytes from this channel into the given buffer.
-   *
-   * <p>If the channels position is beyond the current end of the underlying data source then
-   * end-of-file (-1) is returned.
-   *
-   * <p>The bytes are read starting at the channel's current position, and after some number of
-   * bytes are read (up to the {@link java.nio.Buffer#remaining() remaining} number of bytes in the
-   * buffer) the channel's position is increased by the number of bytes actually read. The bytes
-   * will be read into the buffer starting at the buffer's current
-   * {@link java.nio.Buffer#position() position}. The buffer's {@link java.nio.Buffer#limit()
-   * limit} is not changed.
-   *
-   * <p>The call may block if other threads are also attempting to read from the same channel.
-   *
-   * @param buffer
-   *     the byte buffer to receive the bytes.
-   * @return the number of bytes actually read, or -1 if the end of the data has been reached
-   * @throws AsynchronousCloseException
-   *     if another thread closes the channel during the read.
-   * @throws ClosedByInterruptException
-   *     if another thread interrupts the calling thread while the operation is in progress. The
-   *     interrupt state of the calling thread is set and the channel is closed.
-   * @throws ClosedChannelException
-   *     if the channel is closed.
-   * @throws IOException
-   *     another I/O error occurs, details are in the message.
-   * @throws NonReadableChannelException
-   *     if the channel was not opened for reading.
-   */
-  @Override
-  int read(ByteBuffer buffer) throws IOException;
-
-}
diff --git a/luni/src/main/java/java/nio/channels/ServerSocketChannel.java b/luni/src/main/java/java/nio/channels/ServerSocketChannel.java
index c720451..ef50155 100644
--- a/luni/src/main/java/java/nio/channels/ServerSocketChannel.java
+++ b/luni/src/main/java/java/nio/channels/ServerSocketChannel.java
@@ -20,7 +20,6 @@
 import java.io.IOException;
 import java.net.ServerSocket;
 import java.net.SocketAddress;
-import java.net.SocketOption;
 import java.nio.channels.spi.AbstractSelectableChannel;
 import java.nio.channels.spi.SelectorProvider;
 import java.util.Set;
@@ -37,9 +36,7 @@
  * {@link NotYetBoundException}. It can be bound by calling the bind method of a
  * related {@code ServerSocket} instance.
  */
-public abstract class ServerSocketChannel extends AbstractSelectableChannel
-        implements NetworkChannel {
-
+public abstract class ServerSocketChannel extends AbstractSelectableChannel {
     /**
      * Constructs a new {@link ServerSocketChannel}.
      *
@@ -86,76 +83,6 @@
     public abstract ServerSocket socket();
 
     /**
-     * {@inheritDoc}
-     *
-     * <p>This is equivalent to {@code bind(local, 0)}.
-     * @hide Until ready for a public API change
-     */
-    @Override
-    public final ServerSocketChannel bind(SocketAddress local) throws IOException {
-        return bind(local, 0);
-    }
-
-    /**
-     * Binds this server channel to the given local socket address. If the {@code localAddr} is set
-     * to {@code null} the socket will be bound to an available local address on any free port of
-     * the system.
-     *
-     * @param localAddr
-     *             the local machine address and port to bind on.
-     * @param backlog the maximum number of unaccepted connections. Passing 0 or
-     *             a negative value yields the default backlog of 50.
-     * @return this {@code ServerSocketChannel}.
-     * @throws UnsupportedAddressTypeException
-     *             if the {@code SocketAddress} is not supported.
-     * @throws ClosedChannelException
-     *             if the channel is closed.
-     * @throws AlreadyBoundException
-     *             if the channel is already bound.
-     * @throws IOException
-     *             if another I/O error occurs.
-     * @since 1.7
-     * @hide Until ready for a public API change
-     */
-    public ServerSocketChannel bind(SocketAddress localAddr, int backlog) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-     @Override
-    public SocketAddress getLocalAddress() throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> T getOption(SocketOption<T> option) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> ServerSocketChannel setOption(SocketOption<T> option, T value) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public Set<SocketOption<?>> supportedOptions() {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /**
      * Accepts a connection to this server-socket channel.
      * <p>
      * This method returns {@code null} when this channel is non-blocking and no
diff --git a/luni/src/main/java/java/nio/channels/SocketChannel.java b/luni/src/main/java/java/nio/channels/SocketChannel.java
index a6d1551..a91fccd 100644
--- a/luni/src/main/java/java/nio/channels/SocketChannel.java
+++ b/luni/src/main/java/java/nio/channels/SocketChannel.java
@@ -20,7 +20,6 @@
 import java.io.IOException;
 import java.net.Socket;
 import java.net.SocketAddress;
-import java.net.SocketOption;
 import java.nio.ByteBuffer;
 import java.nio.channels.spi.AbstractSelectableChannel;
 import java.nio.channels.spi.SelectorProvider;
@@ -64,7 +63,7 @@
  * processing, calls to {@link #read} and {@link #write} will block.
  */
 public abstract class SocketChannel extends AbstractSelectableChannel implements
-        ByteChannel, ScatteringByteChannel, GatheringByteChannel, NetworkChannel {
+        ByteChannel, ScatteringByteChannel, GatheringByteChannel {
 
     /**
      * Constructs a new {@code SocketChannel}.
@@ -142,46 +141,6 @@
      */
     public abstract Socket socket();
 
-    /** @hide Until ready for a public API change */
-    @Override
-    public SocketChannel bind(SocketAddress local) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public SocketAddress getLocalAddress() throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> T getOption(SocketOption<T> option) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public <T> SocketChannel setOption(SocketOption<T> option, T value) throws IOException {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-    /** @hide Until ready for a public API change */
-    @Override
-    public Set<SocketOption<?>> supportedOptions() {
-        // This method was added for interoperability with Java 7, where it is abstract. It is
-        // concrete here to avoid breaking existing Android applications that extend this class.
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
     /**
      * Indicates whether this channel's socket is connected.
      *
diff --git a/luni/src/main/java/java/security/Security.java b/luni/src/main/java/java/security/Security.java
index 81bafbd..b859f9a 100644
--- a/luni/src/main/java/java/security/Security.java
+++ b/luni/src/main/java/java/security/Security.java
@@ -348,6 +348,7 @@
      * Sets the value of the specified security property.
      */
     public static void setProperty(String key, String value) {
+        Services.setNeedRefresh();
         secprops.put(key, value);
     }
 
diff --git a/luni/src/main/java/java/text/DateFormatSymbols.java b/luni/src/main/java/java/text/DateFormatSymbols.java
index 0d33d75..56c1e65 100644
--- a/luni/src/main/java/java/text/DateFormatSymbols.java
+++ b/luni/src/main/java/java/text/DateFormatSymbols.java
@@ -63,15 +63,13 @@
 
     // Localized display names.
     String[][] zoneStrings;
-    // Has the user called setZoneStrings?
-    transient boolean customZoneStrings;
 
-    /**
-     * Locale, necessary to lazily load time zone strings. We force the time
-     * zone names to load upon serialization, so this will never be needed
-     * post deserialization.
+    /*
+     * Locale, necessary to lazily load time zone strings. Added to the serialized form for
+     * Android's L release. May be null if the object was deserialized using data from older
+     * releases. See b/16502916.
      */
-    transient final Locale locale;
+    final Locale locale;
 
     /**
      * Gets zone strings, initializing them if necessary. Does not create
@@ -102,7 +100,7 @@
      *            the locale.
      */
     public DateFormatSymbols(Locale locale) {
-        this.locale = locale;
+        this.locale = LocaleData.mapInvalidAndNullLocales(locale);
         this.localPatternChars = SimpleDateFormat.PATTERN_CHARS;
 
         this.localeData = LocaleData.get(locale);
@@ -152,6 +150,12 @@
 
     private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
         ois.defaultReadObject();
+
+        Locale locale = this.locale;
+        if (locale == null) {
+            // Before the L release Android did not serialize the locale. Handle its absence.
+            locale = Locale.getDefault();
+        }
         this.localeData = LocaleData.get(locale);
     }
 
@@ -215,7 +219,6 @@
         // 'zoneStrings' is so large, we just print a representative value.
         return getClass().getName() +
                 "[amPmStrings=" + Arrays.toString(ampms) +
-                ",customZoneStrings=" + customZoneStrings +
                 ",eras=" + Arrays.toString(eras) +
                 ",localPatternChars=" + localPatternChars +
                 ",months=" + Arrays.toString(months) +
@@ -483,6 +486,25 @@
             }
         }
         this.zoneStrings = clone2dStringArray(zoneStrings);
-        this.customZoneStrings = true;
+    }
+
+    /**
+     * Returns the display name of the timezone specified. Returns null if no name was found in the
+     * zone strings.
+     *
+     * @param daylight whether to return the daylight savings or the standard name
+     * @param style one of the {@link TimeZone} styles such as {@link TimeZone#SHORT}
+     *
+     * @hide used internally
+     */
+    String getTimeZoneDisplayName(TimeZone tz, boolean daylight, int style) {
+        if (style != TimeZone.SHORT && style != TimeZone.LONG) {
+            throw new IllegalArgumentException("Bad style: " + style);
+        }
+
+        // If custom zone strings have been set with setZoneStrings() we use those. Otherwise we
+        // use the ones from LocaleData.
+        String[][] zoneStrings = internalZoneStrings();
+        return TimeZoneNames.getDisplayName(zoneStrings, tz.getID(), daylight, style);
     }
 }
diff --git a/luni/src/main/java/java/text/DecimalFormat.java b/luni/src/main/java/java/text/DecimalFormat.java
index fbbc172..dc70886 100644
--- a/luni/src/main/java/java/text/DecimalFormat.java
+++ b/luni/src/main/java/java/text/DecimalFormat.java
@@ -900,8 +900,9 @@
      */
     @Override
     public void setCurrency(Currency currency) {
-        ndf.setCurrency(Currency.getInstance(currency.getCurrencyCode()));
-        symbols.setCurrency(currency);
+        Currency instance = Currency.getInstance(currency.getCurrencyCode());
+        symbols.setCurrency(instance);
+        ndf.setCurrency(symbols.getCurrencySymbol(), currency.getCurrencyCode());
     }
 
     /**
diff --git a/luni/src/main/java/java/text/DecimalFormatSymbols.java b/luni/src/main/java/java/text/DecimalFormatSymbols.java
index 1611594..6e25c1b 100644
--- a/luni/src/main/java/java/text/DecimalFormatSymbols.java
+++ b/luni/src/main/java/java/text/DecimalFormatSymbols.java
@@ -81,6 +81,7 @@
      *            the locale.
      */
     public DecimalFormatSymbols(Locale locale) {
+        locale = LocaleData.mapInvalidAndNullLocales(locale);
         LocaleData localeData = LocaleData.get(locale);
         this.zeroDigit = localeData.zeroDigit;
         this.digit = '#';
diff --git a/luni/src/main/java/java/text/SimpleDateFormat.java b/luni/src/main/java/java/text/SimpleDateFormat.java
index 259bfe0..c1a8ee9 100644
--- a/luni/src/main/java/java/text/SimpleDateFormat.java
+++ b/luni/src/main/java/java/text/SimpleDateFormat.java
@@ -740,15 +740,9 @@
             TimeZone tz = calendar.getTimeZone();
             boolean daylight = (calendar.get(Calendar.DST_OFFSET) != 0);
             int style = count < 4 ? TimeZone.SHORT : TimeZone.LONG;
-            if (!formatData.customZoneStrings) {
-                buffer.append(tz.getDisplayName(daylight, style, formatData.locale));
-                return;
-            }
-            // We can't call TimeZone.getDisplayName() because it would not use
-            // the custom DateFormatSymbols of this SimpleDateFormat.
-            String custom = TimeZoneNames.getDisplayName(formatData.zoneStrings, tz.getID(), daylight, style);
-            if (custom != null) {
-                buffer.append(custom);
+            String zoneString = formatData.getTimeZoneDisplayName(tz, daylight, style);
+            if (zoneString != null) {
+                buffer.append(zoneString);
                 return;
             }
         }
@@ -759,21 +753,11 @@
     // See http://www.unicode.org/reports/tr35/#Date_Format_Patterns for the different counts.
     // @param generalTimeZone "GMT-08:00" rather than "-0800".
     private void appendNumericTimeZone(StringBuffer buffer, int count, boolean generalTimeZone) {
-        int offset = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
-        char sign = '+';
-        if (offset < 0) {
-            sign = '-';
-            offset = -offset;
-        }
-        if (generalTimeZone || count == 4) {
-            buffer.append("GMT");
-        }
-        buffer.append(sign);
-        appendNumber(buffer, 2, offset / 3600000);
-        if (generalTimeZone || count >= 4) {
-            buffer.append(':');
-        }
-        appendNumber(buffer, 2, (offset % 3600000) / 60000);
+        int offsetMillis = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
+        boolean includeGmt = generalTimeZone || count == 4;
+        boolean includeMinuteSeparator = generalTimeZone || count >= 4;
+        buffer.append(TimeZone.createGmtOffsetString(includeGmt,  includeMinuteSeparator,
+                offsetMillis));
     }
 
     private void appendMilliseconds(StringBuffer buffer, int count, int value) {
diff --git a/luni/src/main/java/java/util/Calendar.java b/luni/src/main/java/java/util/Calendar.java
index 4ed2ad19..e15641f 100644
--- a/luni/src/main/java/java/util/Calendar.java
+++ b/luni/src/main/java/java/util/Calendar.java
@@ -642,13 +642,24 @@
 
     /**
      * Field number for {@code get} and {@code set} indicating the
-     * raw offset from GMT in milliseconds.
+     * raw (non-DST) offset from GMT in milliseconds.
+     * Equivalent to {@link java.util.TimeZone#getRawOffset}.
+     *
+     * <p>To determine the total offset from GMT at the time represented
+     * by this calendar, you will need to add the {@code ZONE_OFFSET} and
+     * {@code DST_OFFSET} fields.
      */
     public static final int ZONE_OFFSET = 15;
 
     /**
      * Field number for {@code get} and {@code set} indicating the
-     * daylight savings offset in milliseconds.
+     * daylight savings offset from the {@code ZONE_OFFSET} in milliseconds.
+     * Equivalent to {@link java.util.TimeZone#getDSTSavings} if the represented time
+     * falls inside DST, or 0 otherwise.
+     *
+     * <p>To determine the total offset from GMT at the time represented
+     * by this calendar, you will need to add the {@code ZONE_OFFSET} and
+     * {@code DST_OFFSET} fields.
      */
     public static final int DST_OFFSET = 16;
 
diff --git a/luni/src/main/java/java/util/Collections.java b/luni/src/main/java/java/util/Collections.java
index ce4e579..4541d64 100644
--- a/luni/src/main/java/java/util/Collections.java
+++ b/luni/src/main/java/java/util/Collections.java
@@ -1212,7 +1212,7 @@
                 int length = c.size();
                 Object[] result = new Object[length];
                 Iterator<?> it = iterator();
-                for (int i = length; --i >= 0;) {
+                for (int i = 0; i < length; i++) {
                     result[i] = it.next();
                 }
                 return result;
diff --git a/luni/src/main/java/java/util/Currency.java b/luni/src/main/java/java/util/Currency.java
index a535bc7..8cfb68f 100644
--- a/luni/src/main/java/java/util/Currency.java
+++ b/luni/src/main/java/java/util/Currency.java
@@ -127,17 +127,6 @@
     }
 
     /**
-     * Returns the ISO 4217 numeric code for this currency. If there is no standard numeric code a
-     * zero is returned.
-     *
-     * @since 1.7
-     * @hide Until ready for an API update
-     */
-    public int getNumericCode() {
-        return ICU.getCurrencyNumericCode(currencyCode);
-    }
-
-    /**
      * Equivalent to {@code getSymbol(Locale.getDefault())}.
      * See "<a href="../util/Locale.html#default_locale">Be wary of the default locale</a>".
      */
@@ -157,10 +146,6 @@
      * <p>If there is no locale-specific currency symbol, the ISO 4217 currency code is returned.
      */
     public String getSymbol(Locale locale) {
-        if (locale.getCountry().length() == 0) {
-            return currencyCode;
-        }
-
         // Check the locale first, in case the locale has the same currency.
         LocaleData localeData = LocaleData.get(locale);
         if (localeData.internationalCurrencySymbol.equals(currencyCode)) {
diff --git a/luni/src/main/java/java/util/GregorianCalendar.java b/luni/src/main/java/java/util/GregorianCalendar.java
index be3e5c9..be96684 100644
--- a/luni/src/main/java/java/util/GregorianCalendar.java
+++ b/luni/src/main/java/java/util/GregorianCalendar.java
@@ -331,7 +331,16 @@
         setTimeInMillis(System.currentTimeMillis());
     }
 
-    GregorianCalendar(boolean ignored) {
+    /**
+     * A minimum-cost constructor that does not initialize the current time or perform any date
+     * calculations. For use internally when the time will be set later. Other constructors, such as
+     * {@link GregorianCalendar#GregorianCalendar()}, set the time to the current system clock
+     * and recalculate the fields incurring unnecessary cost when the time or fields will be set
+     * later.
+     *
+     * @hide used internally
+     */
+    public GregorianCalendar(boolean ignored) {
         super(TimeZone.getDefault());
         setFirstDayOfWeek(SUNDAY);
         setMinimalDaysInFirstWeek(1);
@@ -571,7 +580,7 @@
 
         // We unconditionally overwrite DST_OFFSET and ZONE_OFFSET with
         // values from the timezone that's currently in use. This gives us
-        // much more consistent behaviour, and matches ICU4J behaviour (though
+        // much more consistent behavior, and matches ICU4J behavior (though
         // it is inconsistent with the RI).
         //
         // Anything callers can do with ZONE_OFFSET they can do by constructing
diff --git a/luni/src/main/java/java/util/Locale.java b/luni/src/main/java/java/util/Locale.java
index a3eaf21..e0582dc 100644
--- a/luni/src/main/java/java/util/Locale.java
+++ b/luni/src/main/java/java/util/Locale.java
@@ -270,6 +270,11 @@
     public static final char UNICODE_LOCALE_EXTENSION = 'u';
 
     /**
+     * ISO 639-3 generic code for undetermined languages.
+     */
+    private static final String UNDETERMINED_LANGUAGE = "und";
+
+    /**
      * The current default locale. It is temporarily assigned to US because we
      * need a default locale to lookup the real default locale.
      */
@@ -340,18 +345,22 @@
          * @throws IllformedLocaleException if the language was invalid.
          */
         public Builder setLanguage(String language) {
-            this.language = normalizeAndValidateLanguage(language);
+            this.language = normalizeAndValidateLanguage(language, true /* strict */);
             return this;
         }
 
-        private static String normalizeAndValidateLanguage(String language) {
+        private static String normalizeAndValidateLanguage(String language, boolean strict) {
             if (language == null || language.isEmpty()) {
                 return "";
             }
 
             final String lowercaseLanguage = language.toLowerCase(Locale.ROOT);
             if (!isValidBcp47Alpha(lowercaseLanguage, 2, 3)) {
-                throw new IllformedLocaleException("Invalid language: " + language);
+                if (strict) {
+                    throw new IllformedLocaleException("Invalid language: " + language);
+                } else {
+                    return UNDETERMINED_LANGUAGE;
+                }
             }
 
             return lowercaseLanguage;
@@ -377,7 +386,7 @@
                 return this;
             }
 
-            final Locale fromIcu = ICU.forLanguageTag(languageTag, true /* strict */);
+            final Locale fromIcu = forLanguageTag(languageTag, true /* strict */);
             // When we ask ICU for strict parsing, it might return a null locale
             // if the language tag is malformed.
             if (fromIcu == null) {
@@ -400,11 +409,11 @@
          * @throws IllformedLocaleException if {@code} region is invalid.
          */
         public Builder setRegion(String region) {
-            this.region = normalizeAndValidateRegion(region);
+            this.region = normalizeAndValidateRegion(region, true /* strict */);
             return this;
         }
 
-        private static String normalizeAndValidateRegion(String region) {
+        private static String normalizeAndValidateRegion(String region, boolean strict) {
             if (region == null || region.isEmpty()) {
                 return "";
             }
@@ -412,7 +421,11 @@
             final String uppercaseRegion = region.toUpperCase(Locale.ROOT);
             if (!isValidBcp47Alpha(uppercaseRegion, 2, 2) &&
                     !isUnM49AreaCode(uppercaseRegion)) {
-                throw new IllformedLocaleException("Invalid region: " + region);
+                if (strict) {
+                    throw new IllformedLocaleException("Invalid region: " + region);
+                } else {
+                    return "";
+                }
             }
 
             return uppercaseRegion;
@@ -453,27 +466,32 @@
             String[] subTags = normalizedVariant.split("_");
 
             for (String subTag : subTags) {
-                // The BCP-47 spec states that :
-                // - Subtags can be between [5, 8] alphanumeric chars in length.
-                // - Subtags that start with a number are allowed to be 4 chars in length.
-                if (subTag.length() >= 5 && subTag.length() <= 8) {
-                    if (!isAsciiAlphaNum(subTag)) {
-                        throw new IllformedLocaleException("Invalid variant: " + variant);
-                    }
-                } else if (subTag.length() == 4) {
-                    final char firstChar = subTag.charAt(0);
-                    if (!(firstChar >= '0' && firstChar <= '9') || !isAsciiAlphaNum(subTag)) {
-                        throw new IllformedLocaleException("Invalid variant: " + variant);
-                    }
-                } else {
+                if (!isValidVariantSubtag(subTag)) {
                     throw new IllformedLocaleException("Invalid variant: " + variant);
                 }
             }
 
-
             return normalizedVariant;
         }
 
+        private static boolean isValidVariantSubtag(String subTag) {
+            // The BCP-47 spec states that :
+            // - Subtags can be between [5, 8] alphanumeric chars in length.
+            // - Subtags that start with a number are allowed to be 4 chars in length.
+            if (subTag.length() >= 5 && subTag.length() <= 8) {
+                if (isAsciiAlphaNum(subTag)) {
+                    return true;
+                }
+            } else if (subTag.length() == 4) {
+                final char firstChar = subTag.charAt(0);
+                if ((firstChar >= '0' && firstChar <= '9') && isAsciiAlphaNum(subTag)) {
+                    return true;
+                }
+            }
+
+            return false;
+        }
+
         /**
          * Sets the locale script. If {@code script} is {@code null} or empty,
          * the previous value is cleared.
@@ -489,17 +507,24 @@
          * @throws IllformedLocaleException if {@code script} is invalid.
          */
         public Builder setScript(String script) {
+            this.script = normalizeAndValidateScript(script, true /* strict */);
+            return this;
+        }
+
+        private static String normalizeAndValidateScript(String script, boolean strict) {
             if (script == null || script.isEmpty()) {
-                this.script = "";
-                return this;
+                return "";
             }
 
             if (!isValidBcp47Alpha(script, 4, 4)) {
-                throw new IllformedLocaleException("Invalid script: " + script);
+                if (strict) {
+                    throw new IllformedLocaleException("Invalid script: " + script);
+                } else {
+                    return "";
+                }
             }
 
-            this.script = titleCaseAsciiWord(script);
-            return this;
+            return titleCaseAsciiWord(script);
         }
 
         /**
@@ -795,7 +820,7 @@
             throw new NullPointerException("languageTag == null");
         }
 
-        return ICU.forLanguageTag(languageTag, false /* strict */);
+        return forLanguageTag(languageTag, false /* strict */);
     }
 
     private transient String countryCode;
@@ -1005,9 +1030,9 @@
             return "";
         }
 
-        try {
-            Builder.normalizeAndValidateRegion(countryCode);
-        } catch (IllformedLocaleException ex) {
+        final String normalizedRegion = Builder.normalizeAndValidateRegion(
+                countryCode, false /* strict */);
+        if (normalizedRegion.isEmpty()) {
             return countryCode;
         }
 
@@ -1041,9 +1066,9 @@
         // display language for the indeterminate language code.
         //
         // Sigh... ugh... and what not.
-        try {
-            Builder.normalizeAndValidateLanguage(languageCode);
-        } catch (IllformedLocaleException ex) {
+        final String normalizedLanguage = Builder.normalizeAndValidateLanguage(
+                languageCode, false /* strict */);
+        if (UNDETERMINED_LANGUAGE.equals(normalizedLanguage)) {
             return languageCode;
         }
 
@@ -1331,17 +1356,8 @@
             // in the builder, but we must use hyphens in the BCP-47 language tag.
             variant = variantCode.replace('_', '-');
         } else {
-            try {
-                language = Builder.normalizeAndValidateLanguage(languageCode);
-            } catch (IllformedLocaleException ilfe) {
-                // Ignored, continue processing with "".
-            }
-
-            try {
-                region = Builder.normalizeAndValidateRegion(countryCode);
-            } catch (IllformedLocaleException ilfe) {
-                // Ignored, continue processing with "".
-            }
+            language = Builder.normalizeAndValidateLanguage(languageCode, false /* strict */);
+            region = Builder.normalizeAndValidateRegion(countryCode, false /* strict */);
 
             try {
                 variant = Builder.normalizeAndValidateVariant(variantCode);
@@ -1358,7 +1374,7 @@
         }
 
         if (language.isEmpty()) {
-            language = "und";
+            language = UNDETERMINED_LANGUAGE;
         }
 
         if ("no".equals(language) && "NO".equals(region) && "NY".equals(variant)) {
@@ -1497,7 +1513,7 @@
     private static String concatenateRange(String[] array, int start, int end) {
         StringBuilder builder = new StringBuilder(32);
         for (int i = start; i < end; ++i) {
-            if (i != 0) {
+            if (i != start) {
                 builder.append('-');
             }
             builder.append(array[i]);
@@ -1922,8 +1938,10 @@
             while (true) {
                 final Map.Entry<String, String> keyWord = keywordsIterator.next();
                 sb.append(keyWord.getKey());
-                sb.append('-');
-                sb.append(keyWord.getValue());
+                if (!keyWord.getValue().isEmpty()) {
+                    sb.append('-');
+                    sb.append(keyWord.getValue());
+                }
                 if (keywordsIterator.hasNext()) {
                     sb.append('-');
                 } else {
@@ -1970,6 +1988,8 @@
 
         if (subtagsForKeyword.size() > 0) {
             keywords.put(lastKeyword, joinBcp47Subtags(subtagsForKeyword));
+        } else {
+            keywords.put(lastKeyword, "");
         }
     }
 
@@ -1991,7 +2011,10 @@
         return sb.toString();
     }
 
-    private static String adjustLanguageCode(String languageCode) {
+    /**
+     * @hide for internal use only.
+     */
+    public static String adjustLanguageCode(String languageCode) {
         String adjusted = languageCode.toLowerCase(Locale.US);
         // Map new language codes to the obsolete language
         // codes so the correct resource bundles will be used.
@@ -2005,4 +2028,230 @@
 
         return adjusted;
     }
+
+    /**
+     * Map of grandfathered language tags to their modern replacements.
+     */
+    private static final TreeMap<String, String> GRANDFATHERED_LOCALES;
+
+    static {
+        GRANDFATHERED_LOCALES = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
+
+        // From http://tools.ietf.org/html/bcp47
+        //
+        // grandfathered = irregular           ; non-redundant tags registered
+        //               / regular             ; during the RFC 3066 era
+        //  irregular =
+        GRANDFATHERED_LOCALES.put("en-GB-oed", "en-GB-x-oed");
+        GRANDFATHERED_LOCALES.put("i-ami", "ami");
+        GRANDFATHERED_LOCALES.put("i-bnn", "bnn");
+        GRANDFATHERED_LOCALES.put("i-default", "en-x-i-default");
+        GRANDFATHERED_LOCALES.put("i-enochian", "und-x-i-enochian");
+        GRANDFATHERED_LOCALES.put("i-hak", "hak");
+        GRANDFATHERED_LOCALES.put("i-klingon", "tlh");
+        GRANDFATHERED_LOCALES.put("i-lux", "lb");
+        GRANDFATHERED_LOCALES.put("i-mingo", "see-x-i-mingo");
+        GRANDFATHERED_LOCALES.put("i-navajo", "nv");
+        GRANDFATHERED_LOCALES.put("i-pwn", "pwn");
+        GRANDFATHERED_LOCALES.put("i-tao", "tao");
+        GRANDFATHERED_LOCALES.put("i-tay", "tay");
+        GRANDFATHERED_LOCALES.put("i-tsu", "tsu");
+        GRANDFATHERED_LOCALES.put("sgn-BE-FR", "sfb");
+        GRANDFATHERED_LOCALES.put("sgn-BE-NL", "vgt");
+        GRANDFATHERED_LOCALES.put("sgn-CH-DE", "sgg");
+
+        // regular =
+        GRANDFATHERED_LOCALES.put("art-lojban", "jbo");
+        GRANDFATHERED_LOCALES.put("cel-gaulish", "xtg-x-cel-gaulish");
+        GRANDFATHERED_LOCALES.put("no-bok", "nb");
+        GRANDFATHERED_LOCALES.put("no-nyn", "nn");
+        GRANDFATHERED_LOCALES.put("zh-guoyu", "cmn");
+        GRANDFATHERED_LOCALES.put("zh-hakka", "hak");
+        GRANDFATHERED_LOCALES.put("zh-min", "nan-x-zh-min");
+        GRANDFATHERED_LOCALES.put("zh-min-nan", "nan");
+        GRANDFATHERED_LOCALES.put("zh-xiang", "hsn");
+    }
+
+    private static String convertGrandfatheredTag(String original) {
+        final String converted = GRANDFATHERED_LOCALES.get(original);
+        return converted != null ? converted : original;
+    }
+
+    /**
+     * Scans elements of {@code subtags} in the range {@code [startIndex, endIndex)}
+     * and appends valid variant subtags upto the first invalid subtag  (if any) to
+     * {@code normalizedVariants}. All appended variant subtags are converted to uppercase.
+     */
+    private static void extractVariantSubtags(String[] subtags, int startIndex, int endIndex,
+            List<String> normalizedVariants) {
+        for (int i = startIndex; i < endIndex; i++) {
+            final String subtag = subtags[i];
+
+            if (Builder.isValidVariantSubtag(subtag)) {
+                normalizedVariants.add(subtag.toUpperCase(Locale.ROOT));
+            } else {
+                break;
+            }
+        }
+    }
+
+    /**
+     * Scans elements of {@code subtags} in the range {@code [startIndex, endIndex)}
+     * and inserts valid extensions into {@code extensions}. The scan is aborted
+     * when an invalid extension is encountered. Returns the index of the first
+     * unparsable element of {@code subtags}.
+     */
+    private static int extractExtensions(String[] subtags, int startIndex, int endIndex,
+            Map<Character, String> extensions) {
+        int privateUseExtensionIndex = -1;
+        int extensionKeyIndex = -1;
+
+        int i = startIndex;
+        for (; i < endIndex; i++) {
+            final String subtag = subtags[i];
+
+            final boolean parsingPrivateUse = (privateUseExtensionIndex != -1) &&
+                    (extensionKeyIndex == privateUseExtensionIndex);
+
+            // Note that private use extensions allow subtags of length 1.
+            // Private use extensions *must* come last, so there's no ambiguity
+            // in that case.
+            if (subtag.length() == 1 && !parsingPrivateUse) {
+                // Emit the last extension we encountered if any. First check
+                // whether we encountered two keys in a row (which is an error).
+                // Also checks if we already have an extension with the same key,
+                // which is again an error.
+                if (extensionKeyIndex != -1) {
+                    if ((i - 1) == extensionKeyIndex) {
+                        return extensionKeyIndex;
+                    }
+
+                    final String key = subtags[extensionKeyIndex];
+                    if (extensions.containsKey(key.charAt(0))) {
+                        return extensionKeyIndex;
+                    }
+
+                    final String value = concatenateRange(subtags, extensionKeyIndex + 1, i);
+                    extensions.put(key.charAt(0), value.toLowerCase(Locale.ROOT));
+                }
+
+                // Mark the start of the next extension. Also keep track of whether this
+                // is a private use extension, and throw an error if it doesn't come last.
+                extensionKeyIndex = i;
+                if ("x".equals(subtag)) {
+                    privateUseExtensionIndex = i;
+                } else if (privateUseExtensionIndex != -1) {
+                    // The private use extension must come last.
+                    return privateUseExtensionIndex;
+                }
+            } else if (extensionKeyIndex != -1) {
+                // We must have encountered a valid key in order to start parsing
+                // its subtags.
+                if (!isValidBcp47Alphanum(subtag, parsingPrivateUse ? 1 : 2, 8)) {
+                    return i;
+                }
+            } else {
+                // Encountered a value without a preceding key.
+                return i;
+            }
+        }
+
+        if (extensionKeyIndex != -1) {
+            if ((i - 1) == extensionKeyIndex) {
+                return extensionKeyIndex;
+            }
+
+            final String key = subtags[extensionKeyIndex];
+            if (extensions.containsKey(key.charAt(0))) {
+                return extensionKeyIndex;
+            }
+
+            final String value = concatenateRange(subtags, extensionKeyIndex + 1, i);
+            extensions.put(key.charAt(0), value.toLowerCase(Locale.ROOT));
+        }
+
+        return i;
+    }
+
+    private static Locale forLanguageTag(/* @Nonnull */ String tag, boolean strict) {
+        final String converted = convertGrandfatheredTag(tag);
+        final String[] subtags = converted.split("-");
+
+        int lastSubtag = subtags.length;
+        for (int i = 0; i < subtags.length; ++i) {
+            final String subtag = subtags[i];
+            if (subtag.isEmpty() || subtag.length() > 8) {
+                if (strict) {
+                    throw new IllformedLocaleException("Invalid subtag at index: " + i
+                            + " in tag: " + tag);
+                } else {
+                    lastSubtag = (i - 1);
+                }
+
+                break;
+            }
+        }
+
+        final String languageCode = Builder.normalizeAndValidateLanguage(subtags[0], strict);
+        String scriptCode = "";
+        int nextSubtag = 1;
+        if (lastSubtag > nextSubtag) {
+            scriptCode = Builder.normalizeAndValidateScript(subtags[nextSubtag], false /* strict */);
+            if (!scriptCode.isEmpty()) {
+                nextSubtag++;
+            }
+        }
+
+        String regionCode = "";
+        if (lastSubtag > nextSubtag) {
+            regionCode = Builder.normalizeAndValidateRegion(subtags[nextSubtag], false /* strict */);
+            if (!regionCode.isEmpty()) {
+                nextSubtag++;
+            }
+        }
+
+        List<String> variants = null;
+        if (lastSubtag > nextSubtag) {
+            variants = new ArrayList<String>();
+            extractVariantSubtags(subtags, nextSubtag, lastSubtag, variants);
+            nextSubtag += variants.size();
+        }
+
+        Map<Character, String> extensions = Collections.EMPTY_MAP;
+        if (lastSubtag > nextSubtag) {
+            extensions = new TreeMap<Character, String>();
+            nextSubtag = extractExtensions(subtags, nextSubtag, lastSubtag, extensions);
+        }
+
+        if (nextSubtag != lastSubtag) {
+            if (strict) {
+                throw new IllformedLocaleException("Unparseable subtag: " + subtags[nextSubtag]
+                        + " from language tag: " + tag);
+            }
+        }
+
+        Set<String> unicodeKeywords = Collections.EMPTY_SET;
+        Map<String, String> unicodeAttributes = Collections.EMPTY_MAP;
+        if (extensions.containsKey(UNICODE_LOCALE_EXTENSION)) {
+            unicodeKeywords = new TreeSet<String>();
+            unicodeAttributes = new TreeMap<String, String>();
+            parseUnicodeExtension(extensions.get(UNICODE_LOCALE_EXTENSION).split("-"),
+                    unicodeAttributes, unicodeKeywords);
+        }
+
+        String variantCode = "";
+        if (variants != null && !variants.isEmpty()) {
+            StringBuilder variantsBuilder = new StringBuilder(variants.size() * 8);
+            for (int i = 0; i < variants.size(); ++i) {
+                if (i != 0) {
+                    variantsBuilder.append('_');
+                }
+                variantsBuilder.append(variants.get(i));
+            }
+            variantCode = variantsBuilder.toString();
+        }
+
+        return new Locale(languageCode, regionCode, variantCode, scriptCode,
+                unicodeKeywords, unicodeAttributes, extensions, true /* has validated fields */);
+    }
 }
diff --git a/luni/src/main/java/java/util/TimeZone.java b/luni/src/main/java/java/util/TimeZone.java
index c024e8d..854a4a6 100644
--- a/luni/src/main/java/java/util/TimeZone.java
+++ b/luni/src/main/java/java/util/TimeZone.java
@@ -63,7 +63,7 @@
  *
  * @see Calendar
  * @see GregorianCalendar
- * @see SimpleDateFormat
+ * @see java.text.SimpleDateFormat
  */
 public abstract class TimeZone implements Serializable, Cloneable {
     private static final long serialVersionUID = 3581463369166924961L;
@@ -206,27 +206,48 @@
         // upgrade to icu4c 50 and rewrite the underlying native code. See also the
         // "element[j] != null" check in SimpleDateFormat.parseTimeZone, and the extra work in
         // DateFormatSymbols.getZoneStrings.
-
-        int offset = getRawOffset();
+        int offsetMillis = getRawOffset();
         if (daylightTime) {
-            offset += getDSTSavings();
+            offsetMillis += getDSTSavings();
         }
-        offset /= 60000;
+        return createGmtOffsetString(true /* includeGmt */, true /* includeMinuteSeparator */,
+                offsetMillis);
+    }
+
+    /**
+     * Returns a string representation of an offset from UTC.
+     *
+     * <p>The format is "[GMT](+|-)HH[:]MM". The output is not localized.
+     *
+     * @param includeGmt true to include "GMT", false to exclude
+     * @param includeMinuteSeparator true to include the separator between hours and minutes, false
+     *     to exclude.
+     * @param offsetMillis the offset from UTC
+     *
+     * @hide used internally by SimpleDateFormat
+     */
+    public static String createGmtOffsetString(boolean includeGmt,
+            boolean includeMinuteSeparator, int offsetMillis) {
+        int offsetMinutes = offsetMillis / 60000;
         char sign = '+';
-        if (offset < 0) {
+        if (offsetMinutes < 0) {
             sign = '-';
-            offset = -offset;
+            offsetMinutes = -offsetMinutes;
         }
         StringBuilder builder = new StringBuilder(9);
-        builder.append("GMT");
+        if (includeGmt) {
+            builder.append("GMT");
+        }
         builder.append(sign);
-        appendNumber(builder, 2, offset / 60);
-        builder.append(':');
-        appendNumber(builder, 2, offset % 60);
+        appendNumber(builder, 2, offsetMinutes / 60);
+        if (includeMinuteSeparator) {
+            builder.append(':');
+        }
+        appendNumber(builder, 2, offsetMinutes % 60);
         return builder.toString();
     }
 
-    private void appendNumber(StringBuilder builder, int count, int value) {
+    private static void appendNumber(StringBuilder builder, int count, int value) {
         String string = Integer.toString(value);
         for (int i = 0; i < count - string.length(); i++) {
             builder.append('0');
@@ -329,7 +350,6 @@
         }
 
         // Special cases? These can clone an existing instance.
-        // TODO: should we just add a cache to ZoneInfoDB instead?
         if (id.length() == 3) {
             if (id.equals("GMT")) {
                 return (TimeZone) GMT.clone();
diff --git a/luni/src/main/java/java/util/zip/ZipFile.java b/luni/src/main/java/java/util/zip/ZipFile.java
index 43e8567..b44156e 100644
--- a/luni/src/main/java/java/util/zip/ZipFile.java
+++ b/luni/src/main/java/java/util/zip/ZipFile.java
@@ -26,7 +26,6 @@
 import java.io.InputStream;
 import java.io.RandomAccessFile;
 import java.nio.ByteOrder;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Enumeration;
 import java.util.Iterator;
@@ -98,8 +97,6 @@
 
     private final String filename;
 
-    private final Charset charset;
-
     private File fileToDeleteOnClose;
 
     private RandomAccessFile raf;
@@ -119,23 +116,7 @@
      * @throws IOException if an {@code IOException} occurs.
      */
     public ZipFile(File file) throws ZipException, IOException {
-        this(file, OPEN_READ, StandardCharsets.UTF_8);
-    }
-
-    /**
-     * Constructs a new {@code ZipFile} allowing read access to the contents of the given file.
-     *
-     * <p>The {@code charset} is used to decode the file comment if one exists. If the character
-     * encoding for entry names and comments is not explicitly marked as UTF-8 by the zip file
-     * then {@code charset} is used to decode them.
-     *
-     * @throws ZipException if a zip error occurs.
-     * @throws IOException if an {@code IOException} occurs.
-     * @since 1.7
-     * @hide Until ready for an API update
-     */
-    public ZipFile(File file, Charset charset) throws ZipException, IOException {
-        this(file, OPEN_READ, charset);
+        this(file, OPEN_READ);
     }
 
     /**
@@ -146,7 +127,7 @@
      * @throws IOException if an IOException occurs.
      */
     public ZipFile(String name) throws IOException {
-        this(new File(name), OPEN_READ, StandardCharsets.UTF_8);
+        this(new File(name), OPEN_READ);
     }
 
     /**
@@ -162,31 +143,7 @@
      * @throws IOException if an {@code IOException} occurs.
      */
     public ZipFile(File file, int mode) throws IOException {
-        this(file, mode, StandardCharsets.UTF_8);
-    }
-
-    /**
-     * Constructs a new {@code ZipFile} allowing access to the given file.
-     *
-     * <p>The {@code mode} must be either {@code OPEN_READ} or {@code OPEN_READ|OPEN_DELETE}.
-     * If the {@code OPEN_DELETE} flag is supplied, the file will be deleted at or before the
-     * time that the {@code ZipFile} is closed (the contents will remain accessible until
-     * this {@code ZipFile} is closed); it also calls {@code File.deleteOnExit}.
-     *
-     * <p>The {@code charset} is used to decode the file comment if one exists. If the character
-     * encoding for entry names and comments is not explicitly marked as UTF-8 by the zip file
-     * then {@code charset} is used to decode them.
-     *
-     * @throws IOException if an {@code IOException} occurs.
-     * @since 1.7
-     * @hide Until ready for an API update
-     */
-    public ZipFile(File file, int mode, Charset charset) throws IOException {
         filename = file.getPath();
-        if (charset == null) {
-            throw new NullPointerException("charset == null");
-        }
-        this.charset = charset;
         if (mode != OPEN_READ && mode != (OPEN_READ | OPEN_DELETE)) {
             throw new IllegalArgumentException("Bad mode: " + mode);
         }
@@ -467,7 +424,7 @@
         if (commentLength > 0) {
             byte[] commentBytes = new byte[commentLength];
             raf.readFully(commentBytes);
-            comment = new String(commentBytes, 0, commentBytes.length, charset);
+            comment = new String(commentBytes, 0, commentBytes.length, StandardCharsets.UTF_8);
         }
 
         // Seek to the first CDE and read all entries.
@@ -478,7 +435,7 @@
         BufferedInputStream bufferedStream = new BufferedInputStream(rafStream, 4096);
         byte[] hdrBuf = new byte[CENHDR]; // Reuse the same buffer for each entry.
         for (int i = 0; i < numEntries; ++i) {
-            ZipEntry newEntry = new ZipEntry(hdrBuf, bufferedStream, charset);
+            ZipEntry newEntry = new ZipEntry(hdrBuf, bufferedStream, StandardCharsets.UTF_8);
             if (newEntry.localHeaderRelOffset >= centralDirOffset) {
                 throw new ZipException("Local file header offset is after central directory");
             }
diff --git a/luni/src/main/java/java/util/zip/ZipInputStream.java b/luni/src/main/java/java/util/zip/ZipInputStream.java
index 5a73619..4c0034e 100644
--- a/luni/src/main/java/java/util/zip/ZipInputStream.java
+++ b/luni/src/main/java/java/util/zip/ZipInputStream.java
@@ -21,7 +21,6 @@
 import java.io.InputStream;
 import java.io.PushbackInputStream;
 import java.nio.ByteOrder;
-import java.nio.charset.Charset;
 import java.nio.charset.ModifiedUtf8;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
@@ -90,35 +89,16 @@
 
     private char[] stringCharBuf = new char[256];
 
-    private final Charset charset;
-
     /**
      * Constructs a new {@code ZipInputStream} to read zip entries from the given input stream.
      *
      * <p>UTF-8 is used to decode all strings in the file.
      */
     public ZipInputStream(InputStream stream) {
-        this(stream, StandardCharsets.UTF_8);
-    }
-
-    /**
-     * Constructs a new {@code ZipInputStream} to read zip entries from the given input stream.
-     *
-     * <p>If the character encoding for entry names and comments is not explicitly marked as UTF-8
-     * by the zip file then {@code charset} is used to decode them.
-     *
-     * @since 1.7
-     * @hide Until ready for an API update
-     */
-    public ZipInputStream(InputStream stream, Charset charset) {
         super(new PushbackInputStream(stream, BUF_SIZE), new Inflater(true));
         if (stream == null) {
             throw new NullPointerException("stream == null");
         }
-        if (charset == null) {
-            throw new NullPointerException("charset == null");
-        }
-        this.charset = charset;
     }
 
     /**
@@ -272,12 +252,7 @@
         }
         int extraLength = peekShort(LOCEXT - LOCVER);
 
-        // Determine the character set to use to decode strings.
-        Charset charset = this.charset;
-        if ((flags & ZipFile.GPBF_UTF8_FLAG) != 0) {
-            charset = StandardCharsets.UTF_8;
-        }
-        String name = readString(nameLength, charset);
+        String name = readString(nameLength);
         currentEntry = createZipEntry(name);
         currentEntry.time = ceLastModifiedTime;
         currentEntry.modDate = ceLastModifiedDate;
@@ -298,21 +273,17 @@
     /**
      * Reads bytes from the current stream position returning the string representation.
      */
-    private String readString(int byteLength, Charset charset) throws IOException {
+    private String readString(int byteLength) throws IOException {
         if (byteLength > stringBytesBuf.length) {
             stringBytesBuf = new byte[byteLength];
         }
         Streams.readFully(in, stringBytesBuf, 0, byteLength);
-        if (charset == StandardCharsets.UTF_8) {
-            // The number of chars will always be less than or equal to the number of bytes. It's
-            // fine if this buffer is too long.
-            if (byteLength > stringCharBuf.length) {
-                stringCharBuf = new char[byteLength];
-            }
-            return ModifiedUtf8.decode(stringBytesBuf, stringCharBuf, 0, byteLength);
-        } else {
-            return new String(stringBytesBuf, 0, byteLength, charset);
+        // The number of chars will always be less than or equal to the number of bytes. It's
+        // fine if this buffer is too long.
+        if (byteLength > stringCharBuf.length) {
+            stringCharBuf = new char[byteLength];
         }
+        return ModifiedUtf8.decode(stringBytesBuf, stringCharBuf, 0, byteLength);
     }
 
     private int peekShort(int offset) {
diff --git a/luni/src/main/java/java/util/zip/ZipOutputStream.java b/luni/src/main/java/java/util/zip/ZipOutputStream.java
index ac6bdf2..8278355 100644
--- a/luni/src/main/java/java/util/zip/ZipOutputStream.java
+++ b/luni/src/main/java/java/util/zip/ZipOutputStream.java
@@ -20,7 +20,6 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -76,8 +75,6 @@
 
     private final HashSet<String> entries = new HashSet<String>();
 
-    private final Charset charset;
-
     private int defaultCompressionMethod = DEFLATED;
 
     private int compressionLevel = Deflater.DEFAULT_COMPRESSION;
@@ -103,25 +100,7 @@
      * <p>UTF-8 will be used to encode the file comment, entry names and comments.
      */
     public ZipOutputStream(OutputStream os) {
-        this(os, StandardCharsets.UTF_8);
-    }
-
-    /**
-     * Constructs a new {@code ZipOutputStream} that writes a zip file to the given
-     * {@code OutputStream}.
-     *
-     * <p>The specified character set will be used to encode the file comment, entry names and
-     * comments.
-     *
-     * @since 1.7
-     * @hide Until ready for an API update
-     */
-    public ZipOutputStream(OutputStream os, Charset charset) {
         super(os, new Deflater(Deflater.DEFAULT_COMPRESSION, true));
-        if (charset == null) {
-            throw new NullPointerException("charset == null");
-        }
-        this.charset = charset;
     }
 
     /**
@@ -183,9 +162,7 @@
         // Since gingerbread, we always set the UTF-8 flag on individual files if appropriate.
         // Some tools insist that the central directory have the UTF-8 flag.
         // http://code.google.com/p/android/issues/detail?id=20214
-        if (charset == StandardCharsets.UTF_8) {
-            flags |= ZipFile.GPBF_UTF8_FLAG;
-        }
+        flags |= ZipFile.GPBF_UTF8_FLAG;
         writeLong(cDir, CENSIG);
         writeShort(cDir, ZIP_VERSION_2_0); // Version this file was made by.
         writeShort(cDir, ZIP_VERSION_2_0); // Minimum version needed to extract.
@@ -319,11 +296,11 @@
             // TODO: support Zip64.
             throw new ZipException("Too many entries for the zip file format's 16-bit entry count");
         }
-        nameBytes = ze.name.getBytes(charset);
+        nameBytes = ze.name.getBytes(StandardCharsets.UTF_8);
         checkSizeIsWithinShort("Name", nameBytes);
         entryCommentBytes = EmptyArray.BYTE;
         if (ze.comment != null) {
-            entryCommentBytes = ze.comment.getBytes(charset);
+            entryCommentBytes = ze.comment.getBytes(StandardCharsets.UTF_8);
             // The comment is not written out until the entry is finished, but it is validated here
             // to fail-fast.
             checkSizeIsWithinShort("Comment", entryCommentBytes);
@@ -340,9 +317,7 @@
         int flags = (method == STORED) ? 0 : ZipFile.GPBF_DATA_DESCRIPTOR_FLAG;
         // Java always outputs UTF-8 filenames. (Before Java 7, the RI didn't set this flag and used
         // modified UTF-8. From Java 7, when using UTF_8 it sets this flag and uses normal UTF-8.)
-        if (charset == StandardCharsets.UTF_8) {
-            flags |= ZipFile.GPBF_UTF8_FLAG;
-        }
+        flags |= ZipFile.GPBF_UTF8_FLAG;
         writeLong(out, LOCSIG); // Entry header
         writeShort(out, ZIP_VERSION_2_0); // Minimum version needed to extract.
         writeShort(out, flags);
@@ -384,7 +359,7 @@
             return;
         }
 
-        byte[] newCommentBytes = comment.getBytes(charset);
+        byte[] newCommentBytes = comment.getBytes(StandardCharsets.UTF_8);
         checkSizeIsWithinShort("Comment", newCommentBytes);
         this.commentBytes = newCommentBytes;
     }
@@ -455,8 +430,8 @@
 
     private void checkSizeIsWithinShort(String property, byte[] bytes) {
         if (bytes.length > 0xffff) {
-            throw new IllegalArgumentException(
-                    property + " too long in " + charset + ":" + bytes.length + " bytes");
+            throw new IllegalArgumentException(property + " too long in UTF-8:" + bytes.length +
+                                               " bytes");
         }
     }
 }
diff --git a/luni/src/main/java/javax/crypto/SealedObject.java b/luni/src/main/java/javax/crypto/SealedObject.java
index cfb970b..4b91184 100644
--- a/luni/src/main/java/javax/crypto/SealedObject.java
+++ b/luni/src/main/java/javax/crypto/SealedObject.java
@@ -19,6 +19,7 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -29,6 +30,7 @@
 import java.security.Key;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchProviderException;
+import libcore.io.IoUtils;
 
 /**
  * A {@code SealedObject} is a wrapper around a {@code serializable} object
@@ -57,14 +59,21 @@
     private String paramsAlg;
 
     private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
-        // We do unshared reads here to ensure we have our own clones of the byte[]s.
-        encodedParams = (byte[]) s.readUnshared();
-        encryptedContent = (byte[]) s.readUnshared();
-        // These are regular shared reads because the algorithms used by a given stream are
-        // almost certain to the be same for each object, and String is immutable anyway,
-        // so there's no security concern about sharing.
-        sealAlg = (String) s.readObject();
-        paramsAlg = (String) s.readObject();
+        // This implementation is based on the latest recommendations for safe deserialization at
+        // the time of writing. See the Serialization spec section A.6.
+        ObjectInputStream.GetField fields = s.readFields();
+
+        // The mutable byte arrays are cloned and the immutable strings are not.
+        this.encodedParams = getSafeCopy(fields, "encodedParams");
+        this.encryptedContent = getSafeCopy(fields, "encryptedContent");
+        this.paramsAlg = (String) fields.get("paramsAlg", null);
+        this.sealAlg = (String) fields.get("sealAlg", null);
+    }
+
+    private static byte[] getSafeCopy(ObjectInputStream.GetField fields, String fieldName)
+            throws IOException {
+        byte[] fieldValue = (byte[]) fields.get(fieldName, null);
+        return fieldValue != null ? fieldValue.clone() : null;
     }
 
     /**
@@ -87,13 +96,14 @@
      *             if the cipher is {@code null}.
      */
     public SealedObject(Serializable object, Cipher c)
-                throws IOException, IllegalBlockSizeException {
+            throws IOException, IllegalBlockSizeException {
         if (c == null) {
             throw new NullPointerException("c == null");
         }
+        ObjectOutputStream oos = null;
         try {
             ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            ObjectOutputStream oos = new ObjectOutputStream(bos);
+            oos = new ObjectOutputStream(bos);
             oos.writeObject(object);
             oos.flush();
             AlgorithmParameters ap = c.getParameters();
@@ -105,6 +115,8 @@
             // should be never thrown because the cipher
             // should be initialized for encryption
             throw new IOException(e.toString());
+        } finally {
+            IoUtils.closeQuietly(oos);
         }
     }
 
@@ -119,8 +131,10 @@
         if (so == null) {
             throw new NullPointerException("so == null");
         }
-        this.encryptedContent = so.encryptedContent;
-        this.encodedParams = so.encodedParams;
+        // For safety: clone the mutable arrays so that each object has its own independent copy of
+        // the data.
+        this.encryptedContent = so.encryptedContent != null ? so.encryptedContent.clone() : null;
+        this.encodedParams = so.encodedParams != null ? so.encodedParams.clone() : null;
         this.sealAlg = so.sealAlg;
         this.paramsAlg = so.paramsAlg;
     }
@@ -158,18 +172,14 @@
         try {
             Cipher cipher = Cipher.getInstance(sealAlg);
             if ((paramsAlg != null) && (paramsAlg.length() != 0)) {
-                AlgorithmParameters params =
-                    AlgorithmParameters.getInstance(paramsAlg);
+                AlgorithmParameters params = AlgorithmParameters.getInstance(paramsAlg);
                 params.init(encodedParams);
                 cipher.init(Cipher.DECRYPT_MODE, key, params);
             } else {
                 cipher.init(Cipher.DECRYPT_MODE, key);
             }
             byte[] serialized = cipher.doFinal(encryptedContent);
-            ObjectInputStream ois =
-                    new ObjectInputStream(
-                            new ByteArrayInputStream(serialized));
-            return ois.readObject();
+            return readSerialized(serialized);
         } catch (NoSuchPaddingException e)  {
             // should not be thrown because cipher text was made
             // with existing padding
@@ -186,7 +196,7 @@
             // should not be thrown because the cipher text
             // was correctly made
             throw new NoSuchAlgorithmException(e.toString());
-        } catch (IllegalStateException  e) {
+        } catch (IllegalStateException e) {
             // should never be thrown because cipher is initialized
             throw new NoSuchAlgorithmException(e.toString());
         }
@@ -217,10 +227,7 @@
             throw new NullPointerException("c == null");
         }
         byte[] serialized = c.doFinal(encryptedContent);
-        ObjectInputStream ois =
-                new ObjectInputStream(
-                        new ByteArrayInputStream(serialized));
-        return ois.readObject();
+        return readSerialized(serialized);
     }
 
     /**
@@ -253,18 +260,14 @@
         try {
             Cipher cipher = Cipher.getInstance(sealAlg, provider);
             if ((paramsAlg != null) && (paramsAlg.length() != 0)) {
-                AlgorithmParameters params =
-                    AlgorithmParameters.getInstance(paramsAlg);
+                AlgorithmParameters params = AlgorithmParameters.getInstance(paramsAlg);
                 params.init(encodedParams);
                 cipher.init(Cipher.DECRYPT_MODE, key, params);
             } else {
                 cipher.init(Cipher.DECRYPT_MODE, key);
             }
             byte[] serialized = cipher.doFinal(encryptedContent);
-            ObjectInputStream ois =
-                    new ObjectInputStream(
-                            new ByteArrayInputStream(serialized));
-            return ois.readObject();
+            return readSerialized(serialized);
         } catch (NoSuchPaddingException e)  {
             // should not be thrown because cipher text was made
             // with existing padding
@@ -286,4 +289,15 @@
             throw new NoSuchAlgorithmException(e.toString());
         }
     }
+
+    private static Object readSerialized(byte[] serialized)
+            throws IOException, ClassNotFoundException {
+        ObjectInputStream ois = null;
+        try {
+            ois = new ObjectInputStream(new ByteArrayInputStream(serialized));
+            return ois.readObject();
+        } finally {
+            IoUtils.closeQuietly(ois);
+        }
+    }
 }
diff --git a/luni/src/main/java/javax/net/ssl/DefaultHostnameVerifier.java b/luni/src/main/java/javax/net/ssl/DefaultHostnameVerifier.java
index fa11371..65c8b03 100644
--- a/luni/src/main/java/javax/net/ssl/DefaultHostnameVerifier.java
+++ b/luni/src/main/java/javax/net/ssl/DefaultHostnameVerifier.java
@@ -154,10 +154,7 @@
         int suffixLength = cn.length() - (asterisk + 1);
         int suffixStart = hostName.length() - suffixLength;
         if (hostName.indexOf('.', asterisk) < suffixStart) {
-            // TODO: remove workaround for *.clients.google.com http://b/5426333
-            if (!hostName.endsWith(".clients.google.com")) {
-                return false; // wildcard '*' can't match a '.'
-            }
+            return false; // wildcard '*' can't match a '.'
         }
 
         if (!hostName.regionMatches(suffixStart, cn, asterisk + 1, suffixLength)) {
diff --git a/luni/src/main/java/javax/net/ssl/SSLEngine.java b/luni/src/main/java/javax/net/ssl/SSLEngine.java
index d63ee94..3ba3450 100644
--- a/luni/src/main/java/javax/net/ssl/SSLEngine.java
+++ b/luni/src/main/java/javax/net/ssl/SSLEngine.java
@@ -542,14 +542,14 @@
  *             <td>20+</td>
  *         </tr>
  *         <tr>
- *             <td>TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256</td>
- *             <td>20+</td>
- *             <td></td>
+ *             <td>TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA</td>
+ *             <td>21+</td>
+ *             <td>21+</td>
  *         </tr>
  *         <tr>
- *             <td>TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384</td>
- *             <td>20+</td>
- *             <td></td>
+ *             <td>TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA</td>
+ *             <td>21+</td>
+ *             <td>21+</td>
  *         </tr>
  *         <tr>
  *             <td>TLS_NULL_WITH_NULL_NULL</td>
@@ -558,22 +558,22 @@
  *         </tr>
  *         <tr>
  *             <td>TLS_PSK_WITH_3DES_EDE_CBC_SHA</td>
- *             <td>20+</td>
+ *             <td>21+</td>
  *             <td></td>
  *         </tr>
  *         <tr>
  *             <td>TLS_PSK_WITH_AES_128_CBC_SHA</td>
- *             <td>20+</td>
- *             <td></td>
+ *             <td>21+</td>
+ *             <td>21+</td>
  *         </tr>
  *         <tr>
  *             <td>TLS_PSK_WITH_AES_256_CBC_SHA</td>
- *             <td>20+</td>
- *             <td></td>
+ *             <td>21+</td>
+ *             <td>21+</td>
  *         </tr>
  *         <tr>
  *             <td>TLS_PSK_WITH_RC4_128_SHA</td>
- *             <td>20+</td>
+ *             <td>21+</td>
  *             <td></td>
  *         </tr>
  *         <tr>
@@ -639,6 +639,9 @@
  *     </tbody>
  * </table>
  *
+ * <p><em>NOTE</em>: PSK cipher suites are enabled by default only if the {@code SSLContext} through
+ * which the engine was created has been initialized with a {@code PSKKeyManager}.
+ *
  * @since 1.5
  */
 public abstract class SSLEngine {
@@ -778,18 +781,6 @@
     public abstract SSLSession getSession();
 
     /**
-     * Returns the SSL session for this engine instance. Does not cause the
-     * handshake to start if it has not already started.
-     *
-     * @return the SSL session for this engine instance.
-     * @since 1.7
-     * @hide
-     */
-    public SSLSession getHandshakeSession() {
-        throw new UnsupportedOperationException();
-    }
-
-    /**
      * Returns the SSL cipher suite names that are supported by this engine.
      * These cipher suites can be enabled using
      * {@link #setEnabledCipherSuites(String[])}.
diff --git a/luni/src/main/java/javax/net/ssl/SSLParameters.java b/luni/src/main/java/javax/net/ssl/SSLParameters.java
index b8fdc38..054abe2 100644
--- a/luni/src/main/java/javax/net/ssl/SSLParameters.java
+++ b/luni/src/main/java/javax/net/ssl/SSLParameters.java
@@ -139,28 +139,4 @@
         this.wantClientAuth = wantClientAuth;
         this.needClientAuth = false;
     }
-
-    /**
-     * Returns a string indicating the endpoint identification algorithm to be
-     * used to identify the remote endpoint.
-     *
-     * @see #setEndpointIdentificationAlgorithm(String)
-     * @since 1.7
-     * @hide
-     */
-    public String getEndpointIdentificationAlgorithm() {
-        return endpointIdentificationAlgorithm;
-    }
-
-    /**
-     * Sets the endpoint identification algorithm to be used to identify the
-     * remote endpoint.
-     *
-     * @see #getEndpointIdentificationAlgorithm()
-     * @since 1.7
-     * @hide
-     */
-    public void setEndpointIdentificationAlgorithm(String endpointIdentificationAlgorithm) {
-        this.endpointIdentificationAlgorithm = endpointIdentificationAlgorithm;
-    }
 }
diff --git a/luni/src/main/java/javax/net/ssl/SSLServerSocketFactory.java b/luni/src/main/java/javax/net/ssl/SSLServerSocketFactory.java
index cce72cd..03b8828 100644
--- a/luni/src/main/java/javax/net/ssl/SSLServerSocketFactory.java
+++ b/luni/src/main/java/javax/net/ssl/SSLServerSocketFactory.java
@@ -20,6 +20,7 @@
 import java.security.NoSuchAlgorithmException;
 import java.security.Security;
 import javax.net.ServerSocketFactory;
+import org.apache.harmony.security.fortress.Services;
 
 /**
  * The factory for SSL server sockets.
@@ -32,6 +33,8 @@
 
     private static String defaultName;
 
+    private static int lastCacheVersion = -1;
+
     /**
      * Returns the default {@code SSLServerSocketFactory} instance. The default
      * implementation is defined by the security property
@@ -40,6 +43,12 @@
      * @return the default {@code SSLServerSocketFactory} instance.
      */
     public static synchronized ServerSocketFactory getDefault() {
+        int newCacheVersion = Services.getCacheVersion();
+        if (lastCacheVersion != newCacheVersion) {
+            defaultServerSocketFactory = null;
+            defaultName = null;
+            lastCacheVersion = newCacheVersion;
+        }
         if (defaultServerSocketFactory != null) {
             return defaultServerSocketFactory;
         }
diff --git a/luni/src/main/java/javax/net/ssl/SSLSocket.java b/luni/src/main/java/javax/net/ssl/SSLSocket.java
index f681681..33a88b6 100644
--- a/luni/src/main/java/javax/net/ssl/SSLSocket.java
+++ b/luni/src/main/java/javax/net/ssl/SSLSocket.java
@@ -346,14 +346,14 @@
  *             <td>11+</td>
  *         </tr>
  *         <tr>
- *             <td>TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256</td>
- *             <td>20+</td>
- *             <td></td>
+ *             <td>TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA</td>
+ *             <td>21+</td>
+ *             <td>21+</td>
  *         </tr>
  *         <tr>
- *             <td>TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384</td>
- *             <td>20+</td>
- *             <td></td>
+ *             <td>TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA</td>
+ *             <td>21+</td>
+ *             <td>21+</td>
  *         </tr>
  *         <tr>
  *             <td>TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA</td>
@@ -522,22 +522,22 @@
  *         </tr>
  *         <tr>
  *             <td>TLS_PSK_WITH_3DES_EDE_CBC_SHA</td>
- *             <td>20+</td>
+ *             <td>21+</td>
  *             <td></td>
  *         </tr>
  *         <tr>
  *             <td>TLS_PSK_WITH_AES_128_CBC_SHA</td>
- *             <td>20+</td>
- *             <td></td>
+ *             <td>21+</td>
+ *             <td>21+</td>
  *         </tr>
  *         <tr>
  *             <td>TLS_PSK_WITH_AES_256_CBC_SHA</td>
- *             <td>20+</td>
- *             <td></td>
+ *             <td>21+</td>
+ *             <td>21+</td>
  *         </tr>
  *         <tr>
  *             <td>TLS_PSK_WITH_RC4_128_SHA</td>
- *             <td>20+</td>
+ *             <td>21+</td>
  *             <td></td>
  *         </tr>
  *         <tr>
@@ -578,6 +578,9 @@
  *     </tbody>
  * </table>
  *
+ * <p><em>NOTE</em>: PSK cipher suites are enabled by default only if the {@code SSLContext} through
+ * which the socket was created has been initialized with a {@code PSKKeyManager}.
+ *
  * <p>API Levels 1 to 8 use OpenSSL names for cipher suites. The table below
  * lists these OpenSSL names and their corresponding standard names used in API
  * Levels 9 and newer.
@@ -889,19 +892,6 @@
     public abstract SSLSession getSession();
 
     /**
-     * Returns the {@code SSLSession} for this connection. It will not initiate
-     * the handshake and thus will not block until the handshake has been
-     * established.
-     *
-     * @return the session object.
-     * @since 1.7
-     * @hide
-     */
-    public SSLSession getHandshakeSession() {
-        throw new UnsupportedOperationException();
-    }
-
-    /**
      * Registers the specified listener to receive notification on completion of
      * a handshake on this connection.
      *
diff --git a/luni/src/main/java/javax/net/ssl/SSLSocketFactory.java b/luni/src/main/java/javax/net/ssl/SSLSocketFactory.java
index b07d0fd..b506fa62 100644
--- a/luni/src/main/java/javax/net/ssl/SSLSocketFactory.java
+++ b/luni/src/main/java/javax/net/ssl/SSLSocketFactory.java
@@ -22,6 +22,7 @@
 import java.security.NoSuchAlgorithmException;
 import java.security.Security;
 import javax.net.SocketFactory;
+import org.apache.harmony.security.fortress.Services;
 
 /**
  * The abstract factory implementation to create {@code SSLSocket}s.
@@ -32,7 +33,7 @@
     // The default SSL socket factory
     private static SocketFactory defaultSocketFactory;
 
-    private static String defaultName;
+    private static int lastCacheVersion = -1;
 
     /**
      * Returns the default {@code SSLSocketFactory} instance. The default is
@@ -41,23 +42,39 @@
      * @return the default ssl socket factory instance.
      */
     public static synchronized SocketFactory getDefault() {
-        if (defaultSocketFactory != null) {
+        int newCacheVersion = Services.getCacheVersion();
+        if (defaultSocketFactory != null && lastCacheVersion == newCacheVersion) {
             return defaultSocketFactory;
         }
-        if (defaultName == null) {
-            defaultName = Security.getProperty("ssl.SocketFactory.provider");
-            if (defaultName != null) {
-                ClassLoader cl = Thread.currentThread().getContextClassLoader();
-                if (cl == null) {
-                    cl = ClassLoader.getSystemClassLoader();
-                }
-                try {
-                    final Class<?> sfc = Class.forName(defaultName, true, cl);
-                    defaultSocketFactory = (SocketFactory) sfc.newInstance();
-                } catch (Exception e) {
-                    System.logE("Problem creating " + defaultName, e);
+        lastCacheVersion = newCacheVersion;
+
+        String newName = Security.getProperty("ssl.SocketFactory.provider");
+        if (newName != null) {
+            /* The cache could have been invalidated, but the provider name didn't change. This
+             * will be the most common state, so check for it early without resetting the default
+             * SocketFactory.
+             */
+            if (defaultSocketFactory != null) {
+                if (newName.equals(defaultSocketFactory.getClass().getName())) {
+                    return defaultSocketFactory;
+                } else {
+                    defaultSocketFactory = null;
                 }
             }
+
+            ClassLoader cl = Thread.currentThread().getContextClassLoader();
+            if (cl == null) {
+                cl = ClassLoader.getSystemClassLoader();
+            }
+            try {
+                final Class<?> sfc = Class.forName(newName, true, cl);
+                defaultSocketFactory = (SocketFactory) sfc.newInstance();
+            } catch (Exception e) {
+                System.logW("Could not create " + newName + " with ClassLoader "
+                        + cl.toString() + ": " + e.getMessage());
+            }
+        } else {
+            defaultSocketFactory = null;
         }
 
         if (defaultSocketFactory == null) {
@@ -71,10 +88,12 @@
                 defaultSocketFactory = context.getSocketFactory();
             }
         }
+
         if (defaultSocketFactory == null) {
             // Use internal implementation
             defaultSocketFactory = new DefaultSSLSocketFactory("No SSLSocketFactory installed");
         }
+
         return defaultSocketFactory;
     }
 
diff --git a/luni/src/main/java/javax/net/ssl/X509ExtendedTrustManager.java b/luni/src/main/java/javax/net/ssl/X509ExtendedTrustManager.java
deleted file mode 100644
index 8b398ce..0000000
--- a/luni/src/main/java/javax/net/ssl/X509ExtendedTrustManager.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package javax.net.ssl;
-
-import java.net.Socket;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-/**
- * Allows the connection constraints such as hostname verification and algorithm
- * constraints to be checked along with the checks done in
- * {@link X509TrustManager}.
- *
- * @see SSLParameters#setEndpointIdentificationAlgorithm(String)
- * @since 1.7
- * @hide
- */
-public abstract class X509ExtendedTrustManager implements X509TrustManager {
-    /**
-     * Checks whether the specified certificate chain (partial or complete) can
-     * be validated and is trusted for client authentication for the specified
-     * authentication type.
-     * <p>
-     * If the {@code socket} is supplied, its {@link SSLParameters} will be
-     * checked for endpoint identification.
-     *
-     * @param chain the certificate chain to validate.
-     * @param authType the authentication type used.
-     * @param socket the socket from which to check the {@link SSLParameters}
-     * @throws CertificateException if the certificate chain can't be validated
-     *             or isn't trusted.
-     * @throws IllegalArgumentException if the specified certificate chain is
-     *             empty or {@code null}, or if the specified authentication
-     *             type is {@code null} or an empty string.
-     */
-    public abstract void checkClientTrusted(X509Certificate[] chain, String authType, Socket socket)
-            throws CertificateException;
-
-    /**
-     * Checks whether the specified certificate chain (partial or complete) can
-     * be validated and is trusted for server authentication for the specified
-     * key exchange algorithm.
-     * <p>
-     * If the {@code socket} is supplied, its {@link SSLParameters} will be
-     * checked for endpoint identification.
-     *
-     * @param chain the certificate chain to validate.
-     * @param authType the authentication type used.
-     * @param socket the socket from which to check the {@link SSLParameters}
-     * @throws CertificateException if the certificate chain can't be validated
-     *             or isn't trusted.
-     * @throws IllegalArgumentException if the specified certificate chain is
-     *             empty or {@code null}, or if the specified authentication
-     *             type is {@code null} or an empty string.
-     */
-    public abstract void checkServerTrusted(X509Certificate[] chain, String authType, Socket socket)
-            throws CertificateException;
-
-    /**
-     * Checks whether the specified certificate chain (partial or complete) can
-     * be validated and is trusted for client authentication for the specified
-     * authentication type.
-     * <p>
-     * If the {@code engine} is supplied, its {@link SSLParameters} will be
-     * checked for endpoint identification.
-     *
-     * @param chain the certificate chain to validate.
-     * @param authType the authentication type used.
-     * @param engine the engine from which to check the {@link SSLParameters}
-     * @throws CertificateException if the certificate chain can't be validated
-     *             or isn't trusted.
-     * @throws IllegalArgumentException if the specified certificate chain is
-     *             empty or {@code null}, or if the specified authentication
-     *             type is {@code null} or an empty string.
-     */
-    public abstract void checkClientTrusted(X509Certificate[] chain, String authType,
-            SSLEngine engine) throws CertificateException;
-
-    /**
-     * Checks whether the specified certificate chain (partial or complete) can
-     * be validated and is trusted for server authentication for the specified
-     * key exchange algorithm.
-     * <p>
-     * If the {@code engine} is supplied, its {@link SSLParameters} will be
-     * checked for endpoint identification.
-     *
-     * @param chain the certificate chain to validate.
-     * @param authType the authentication type used.
-     * @param engine the engine from which to check the {@link SSLParameters}
-     * @throws CertificateException if the certificate chain can't be validated
-     *             or isn't trusted.
-     * @throws IllegalArgumentException if the specified certificate chain is
-     *             empty or {@code null}, or if the specified authentication
-     *             type is {@code null} or an empty string.
-     */
-    public abstract void checkServerTrusted(X509Certificate[] chain, String authType,
-            SSLEngine engine) throws CertificateException;
-}
diff --git a/luni/src/main/java/libcore/icu/DateIntervalFormat.java b/luni/src/main/java/libcore/icu/DateIntervalFormat.java
index ab9085f..3855654 100644
--- a/luni/src/main/java/libcore/icu/DateIntervalFormat.java
+++ b/luni/src/main/java/libcore/icu/DateIntervalFormat.java
@@ -92,7 +92,7 @@
     // This is not the behavior of icu4c's DateIntervalFormat, but it's the historical behavior
     // of Android's DateUtils.formatDateRange.
     if (startMs != endMs && endsAtMidnight &&
-        ((flags & FORMAT_SHOW_TIME) == 0 || julianDay(startCalendar) == julianDay(endCalendar))) {
+        ((flags & FORMAT_SHOW_TIME) == 0 || dayDistance(startCalendar, endCalendar) <= 1)) {
       endCalendar.roll(Calendar.DAY_OF_MONTH, false);
       endMs -= DAY_IN_MS;
     }
@@ -224,8 +224,12 @@
     return c.get(Calendar.YEAR) == now.get(Calendar.YEAR);
   }
 
+  private static int dayDistance(Calendar c1, Calendar c2) {
+    return julianDay(c2) - julianDay(c1);
+  }
+
   private static int julianDay(Calendar c) {
-    long utcMs = c.get(Calendar.MILLISECOND) + c.get(Calendar.ZONE_OFFSET);
+    long utcMs = c.getTimeInMillis() + c.get(Calendar.ZONE_OFFSET) + c.get(Calendar.DST_OFFSET);
     return (int) (utcMs / DAY_IN_MS) + EPOCH_JULIAN_DAY;
   }
 
diff --git a/luni/src/main/java/libcore/icu/ICU.java b/luni/src/main/java/libcore/icu/ICU.java
index 33c899e..06e2205 100644
--- a/luni/src/main/java/libcore/icu/ICU.java
+++ b/luni/src/main/java/libcore/icu/ICU.java
@@ -58,18 +58,6 @@
     return isoCountries.clone();
   }
 
-  public static Locale forLanguageTag(String languageTag, boolean strict) {
-    final String icuLocaleId = localeForLanguageTag(languageTag, strict);
-    if (icuLocaleId == null) {
-      // TODO: We should probably return "und" here. From what I can tell,
-      // this happens only when the language in the languageTag is bad.
-      // Investigate this a bit more.
-      return null;
-    }
-
-    return localeFromIcuLocaleId(icuLocaleId);
-  }
-
   private static final int IDX_LANGUAGE = 0;
   private static final int IDX_SCRIPT = 1;
   private static final int IDX_REGION = 2;
@@ -444,9 +432,7 @@
   private static native String[] getISOLanguagesNative();
   private static native String[] getISOCountriesNative();
 
-  private static native String localeForLanguageTag(String languageTag, boolean strict);
-
-  static native boolean initLocaleDataNative(String locale, LocaleData result);
+  static native boolean initLocaleDataNative(String languageTag, LocaleData result);
 
   /**
    * Takes a BCP-47 language tag (Locale.toLanguageTag()). e.g. en-US, not en_US
diff --git a/luni/src/main/java/libcore/icu/LocaleData.java b/luni/src/main/java/libcore/icu/LocaleData.java
index 845ba32..ec05b53 100644
--- a/luni/src/main/java/libcore/icu/LocaleData.java
+++ b/luni/src/main/java/libcore/icu/LocaleData.java
@@ -112,27 +112,36 @@
     private LocaleData() {
     }
 
+    public static Locale mapInvalidAndNullLocales(Locale locale) {
+        if (locale == null) {
+            return Locale.getDefault();
+        }
+
+        if ("und".equals(locale.toLanguageTag())) {
+            return Locale.ROOT;
+        }
+
+        return locale;
+    }
+
     /**
      * Returns a shared LocaleData for the given locale.
      */
     public static LocaleData get(Locale locale) {
-        if (locale == null) {
-            locale = Locale.getDefault();
-        }
-        String localeName = locale.toString();
+        final String languageTag = locale.toLanguageTag();
         synchronized (localeDataCache) {
-            LocaleData localeData = localeDataCache.get(localeName);
+            LocaleData localeData = localeDataCache.get(languageTag);
             if (localeData != null) {
                 return localeData;
             }
         }
         LocaleData newLocaleData = initLocaleData(locale);
         synchronized (localeDataCache) {
-            LocaleData localeData = localeDataCache.get(localeName);
+            LocaleData localeData = localeDataCache.get(languageTag);
             if (localeData != null) {
                 return localeData;
             }
-            localeDataCache.put(localeName, newLocaleData);
+            localeDataCache.put(languageTag, newLocaleData);
             return newLocaleData;
         }
     }
@@ -171,7 +180,7 @@
 
     private static LocaleData initLocaleData(Locale locale) {
         LocaleData localeData = new LocaleData();
-        if (!ICU.initLocaleDataNative(locale.toString(), localeData)) {
+        if (!ICU.initLocaleDataNative(locale.toLanguageTag(), localeData)) {
             throw new AssertionError("couldn't initialize LocaleData for locale " + locale);
         }
 
diff --git a/luni/src/main/java/libcore/icu/NativeDecimalFormat.java b/luni/src/main/java/libcore/icu/NativeDecimalFormat.java
index f512002..fd179c1 100644
--- a/luni/src/main/java/libcore/icu/NativeDecimalFormat.java
+++ b/luni/src/main/java/libcore/icu/NativeDecimalFormat.java
@@ -475,9 +475,9 @@
         setAttribute(this.address, UNUM_DECIMAL_ALWAYS_SHOWN, i);
     }
 
-    public void setCurrency(Currency currency) {
-        setSymbol(this.address, UNUM_CURRENCY_SYMBOL, currency.getSymbol());
-        setSymbol(this.address, UNUM_INTL_CURRENCY_SYMBOL, currency.getCurrencyCode());
+    public void setCurrency(String currencySymbol, String currencyCode) {
+        setSymbol(this.address, UNUM_CURRENCY_SYMBOL, currencySymbol);
+        setSymbol(this.address, UNUM_INTL_CURRENCY_SYMBOL, currencyCode);
     }
 
     public void setGroupingSize(int value) {
diff --git a/luni/src/main/java/libcore/net/url/FileURLConnection.java b/luni/src/main/java/libcore/net/url/FileURLConnection.java
index 94fe1d6..43eaa7d 100644
--- a/luni/src/main/java/libcore/net/url/FileURLConnection.java
+++ b/luni/src/main/java/libcore/net/url/FileURLConnection.java
@@ -225,13 +225,8 @@
 
     /**
      * Returns the length of the file in bytes.
-     *
-     * @return the length of the file
-     * @since 1.7
-     * @hide Until ready for a public API change
      */
-    @Override
-    public long getContentLengthLong() {
+    private long getContentLengthLong() {
         try {
             if (!connected) {
                 connect();
diff --git a/luni/src/main/java/libcore/net/url/JarURLConnectionImpl.java b/luni/src/main/java/libcore/net/url/JarURLConnectionImpl.java
index e00bcab..b01a20a 100644
--- a/luni/src/main/java/libcore/net/url/JarURLConnectionImpl.java
+++ b/luni/src/main/java/libcore/net/url/JarURLConnectionImpl.java
@@ -265,25 +265,12 @@
      */
     @Override
     public int getContentLength() {
-        long length = getContentLengthLong();
-        return length > Integer.MAX_VALUE ? -1 : (int) length;
-    }
-
-    /**
-     * Returns the content length of the resource. Test cases reveal that if the URL is referring to
-     * a Jar file, this method answers a content-length returned by URLConnection. For a jar entry
-     * it should return the entry's size. Otherwise, it will return -1.
-     *
-     * @hide Until ready for a public API change
-     */
-    @Override
-    public long getContentLengthLong() {
         try {
             connect();
             if (jarEntry == null) {
-                return jarFileURLConnection.getContentLengthLong();
+                return jarFileURLConnection.getContentLength();
             }
-            return getJarEntry().getSize();
+            return (int) getJarEntry().getSize();
         } catch (IOException e) {
             // Ignored
         }
diff --git a/luni/src/main/java/libcore/util/EmptyArray.java b/luni/src/main/java/libcore/util/EmptyArray.java
index eb91589c..eac06f2 100644
--- a/luni/src/main/java/libcore/util/EmptyArray.java
+++ b/luni/src/main/java/libcore/util/EmptyArray.java
@@ -23,6 +23,7 @@
     public static final byte[] BYTE = new byte[0];
     public static final char[] CHAR = new char[0];
     public static final double[] DOUBLE = new double[0];
+    public static final float[] FLOAT = new float[0];
     public static final int[] INT = new int[0];
     public static final long[] LONG = new long[0];
 
diff --git a/luni/src/main/java/libcore/util/ZoneInfo.java b/luni/src/main/java/libcore/util/ZoneInfo.java
index 54ee667..fbd120b 100644
--- a/luni/src/main/java/libcore/util/ZoneInfo.java
+++ b/luni/src/main/java/libcore/util/ZoneInfo.java
@@ -13,11 +13,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
+/*
+ * Elements of the WallTime class are a port of Bionic's localtime.c to Java. That code had the
+ * following header:
+ *
+ * This file is in the public domain, so clarified as of
+ * 1996-06-05 by Arthur David Olson.
+ */
 package libcore.util;
 
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.TimeZone;
 import libcore.io.BufferIterator;
 
@@ -51,7 +59,7 @@
     private final byte[] mTypes;
     private final byte[] mIsDsts;
 
-    public static TimeZone makeTimeZone(String id, BufferIterator it) {
+    public static ZoneInfo makeTimeZone(String id, BufferIterator it) {
         // Variable names beginning tzh_ correspond to those in "tzfile.h".
 
         // Check tzh_magic.
@@ -301,4 +309,664 @@
             ",transitions=" + mTransitions.length +
             "]";
     }
+
+    @Override
+    public Object clone() {
+        // Overridden for documentation. The default clone() behavior is exactly what we want.
+        // Though mutable, the arrays of offset data are treated as immutable. Only ID and
+        // mRawOffset are mutable in this class, and those are an immutable object and a primitive
+        // respectively.
+        return super.clone();
+    }
+
+    /**
+     * A class that represents a "wall time". This class is modeled on the C tm struct and
+     * is used to support android.text.format.Time behavior. Unlike the tm struct the year is
+     * represented as the full year, not the years since 1900.
+     *
+     * <p>This class contains a rewrite of various native functions that android.text.format.Time
+     * once relied on such as mktime_tz and localtime_tz. This replacement does not support leap
+     * seconds but does try to preserve behavior around ambiguous date/times found in the BSD
+     * version of mktime that was previously used.
+     *
+     * <p>The original native code used a 32-bit value for time_t on 32-bit Android, which
+     * was the only variant of Android available at the time. To preserve old behavior this code
+     * deliberately uses {@code int} rather than {@code long} for most things and performs
+     * calculations in seconds. This creates deliberate truncation issues for date / times before
+     * 1901 and after 2038. This is intentional but might be fixed in future if all the knock-ons
+     * can be resolved: Application code may have come to rely on the range so previously values
+     * like zero for year could indicate an invalid date but if we move to long the year zero would
+     * be valid.
+     *
+     * <p>All offsets are considered to be safe for addition / subtraction / multiplication without
+     * worrying about overflow. All absolute time arithmetic is checked for overflow / underflow.
+     */
+    public static class WallTime {
+
+        // We use a GregorianCalendar (set to UTC) to handle all the date/time normalization logic
+        // and to convert from a broken-down date/time to a millis value.
+        // Unfortunately, it cannot represent an initial state with a zero day and would
+        // automatically normalize it, so we must copy values into and out of it as needed.
+        private final GregorianCalendar calendar;
+
+        private int year;
+        private int month;
+        private int monthDay;
+        private int hour;
+        private int minute;
+        private int second;
+        private int weekDay;
+        private int yearDay;
+        private int isDst;
+        private int gmtOffsetSeconds;
+
+        public WallTime() {
+            this.calendar = new GregorianCalendar(false);
+            calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
+        }
+
+        /**
+         * Sets the wall time to a point in time using the time zone information provided. This
+         * is a replacement for the old native localtime_tz() function.
+         *
+         * <p>When going from an instant to a wall time it is always unambiguous because there
+         * is only one offset rule acting at any given instant. We do not consider leap seconds.
+         */
+        public void localtime(int timeSeconds, ZoneInfo zoneInfo) {
+            try {
+                int offsetSeconds = zoneInfo.mRawOffset / 1000;
+
+                // Find out the timezone DST state and adjustment.
+                byte isDst;
+                if (zoneInfo.mTransitions.length == 0) {
+                    isDst = 0;
+                } else {
+                    // transitionIndex can be in the range -1..zoneInfo.mTransitions.length - 1
+                    int transitionIndex = findTransitionIndex(zoneInfo, timeSeconds);
+                    if (transitionIndex < 0) {
+                        // -1 means timeSeconds is "before the first recorded transition". The first
+                        // recorded transition is treated as a transition from non-DST and the raw
+                        // offset.
+                        isDst = 0;
+                    } else {
+                        byte transitionType = zoneInfo.mTypes[transitionIndex];
+                        offsetSeconds += zoneInfo.mOffsets[transitionType];
+                        isDst = zoneInfo.mIsDsts[transitionType];
+                    }
+                }
+
+                // Perform arithmetic that might underflow before setting fields.
+                int wallTimeSeconds = checkedAdd(timeSeconds, offsetSeconds);
+
+                // Set fields.
+                calendar.setTimeInMillis(wallTimeSeconds * 1000L);
+                copyFieldsFromCalendar();
+                this.isDst = isDst;
+                this.gmtOffsetSeconds = offsetSeconds;
+            } catch (CheckedArithmeticException e) {
+                // Just stop, leaving fields untouched.
+            }
+        }
+
+        /**
+         * Returns the time in seconds since beginning of the Unix epoch for the wall time using the
+         * time zone information provided. This is a replacement for an old native mktime_tz() C
+         * function.
+         *
+         * <p>When going from a wall time to an instant the answer can be ambiguous. A wall
+         * time can map to zero, one or two instants given sane date/time transitions. Sane
+         * in this case means that transitions occur less frequently than the offset
+         * differences between them (which could cause all sorts of craziness like the
+         * skipping out of transitions).
+         *
+         * <p>For example, this is not fully supported:
+         * <ul>
+         *     <li>t1 { time = 1, offset = 0 }
+         *     <li>t2 { time = 2, offset = -1 }
+         *     <li>t3 { time = 3, offset = -2 }
+         * </ul>
+         * A wall time in this case might map to t1, t2 or t3.
+         *
+         * <p>We do not handle leap seconds.
+         * <p>We assume that no timezone offset transition has an absolute offset > 24 hours.
+         * <p>We do not assume that adjacent transitions modify the DST state; adjustments can
+         * occur for other reasons such as when a zone changes its raw offset.
+         */
+        public int mktime(ZoneInfo zoneInfo) {
+            // Normalize isDst to -1, 0 or 1 to simplify isDst equality checks below.
+            this.isDst = this.isDst > 0 ? this.isDst = 1 : this.isDst < 0 ? this.isDst = -1 : 0;
+
+            copyFieldsToCalendar();
+            final long longWallTimeSeconds = calendar.getTimeInMillis()  / 1000;
+            if (Integer.MIN_VALUE > longWallTimeSeconds
+                    || longWallTimeSeconds > Integer.MAX_VALUE) {
+                // For compatibility with the old native 32-bit implementation we must treat
+                // this as an error. Note: -1 could be confused with a real time.
+                return -1;
+            }
+
+            try {
+                final int wallTimeSeconds =  (int) longWallTimeSeconds;
+                final int rawOffsetSeconds = zoneInfo.mRawOffset / 1000;
+                final int rawTimeSeconds = checkedSubtract(wallTimeSeconds, rawOffsetSeconds);
+
+                if (zoneInfo.mTransitions.length == 0) {
+                    // There is no transition information. There is just a raw offset for all time.
+                    if (this.isDst > 0) {
+                        // Caller has asserted DST, but there is no DST information available.
+                        return -1;
+                    }
+                    copyFieldsFromCalendar();
+                    this.isDst = 0;
+                    this.gmtOffsetSeconds = rawOffsetSeconds;
+                    return rawTimeSeconds;
+                }
+
+                // We cannot know for sure what instant the wall time will map to. Unfortunately, in
+                // order to know for sure we need the timezone information, but to get the timezone
+                // information we need an instant. To resolve this we use the raw offset to find an
+                // OffsetInterval; this will get us the OffsetInterval we need or very close.
+
+                // The initialTransition can be between -1 and (zoneInfo.mTransitions - 1). -1
+                // indicates the rawTime is before the first transition and is handled gracefully by
+                // createOffsetInterval().
+                final int initialTransitionIndex = findTransitionIndex(zoneInfo, rawTimeSeconds);
+
+                if (isDst < 0) {
+                    // This is treated as a special case to get it out of the way:
+                    // When a caller has set isDst == -1 it means we can return the first match for
+                    // the wall time we find. If the caller has specified a wall time that cannot
+                    // exist this always returns -1.
+
+                    Integer result = doWallTimeSearch(zoneInfo, initialTransitionIndex,
+                            wallTimeSeconds, true /* mustMatchDst */);
+                    return result == null ? -1 : result;
+                }
+
+                // If the wall time asserts a DST (isDst == 0 or 1) the search is performed twice:
+                // 1) The first attempts to find a DST offset that matches isDst exactly.
+                // 2) If it fails, isDst is assumed to be incorrect and adjustments are made to see
+                // if a valid wall time can be created. The result can be somewhat arbitrary.
+
+                Integer result = doWallTimeSearch(zoneInfo, initialTransitionIndex, wallTimeSeconds,
+                        true /* mustMatchDst */);
+                if (result == null) {
+                    result = doWallTimeSearch(zoneInfo, initialTransitionIndex, wallTimeSeconds,
+                            false /* mustMatchDst */);
+                }
+                if (result == null) {
+                    result = -1;
+                }
+                return result;
+            } catch (CheckedArithmeticException e) {
+                return -1;
+            }
+        }
+
+        /**
+         * Attempt to apply DST adjustments to {@code oldWallTimeSeconds} to create a wall time in
+         * {@code targetInterval}.
+         *
+         * <p>This is used when a caller has made an assertion about standard time / DST that cannot
+         * be matched to any offset interval that exists. We must therefore assume that the isDst
+         * assertion is incorrect and the invalid wall time is the result of some modification the
+         * caller made to a valid wall time that pushed them outside of the offset interval they
+         * were in. We must correct for any DST change that should have been applied when they did
+         * so.
+         *
+         * <p>Unfortunately, we have no information about what adjustment they made and so cannot
+         * know which offset interval they were previously in. For example, they may have added a
+         * second or a year to a valid time to arrive at what they have.
+         *
+         * <p>We try all offset types that are not the same as the isDst the caller asserted. For
+         * each possible offset we work out the offset difference between that and
+         * {@code targetInterval}, apply it, and see if we are still in {@code targetInterval}. If
+         * we are, then we have found an adjustment.
+         */
+        private Integer tryOffsetAdjustments(ZoneInfo zoneInfo, int oldWallTimeSeconds,
+                OffsetInterval targetInterval, int transitionIndex, int isDstToFind)
+                throws CheckedArithmeticException {
+
+            int[] offsetsToTry = getOffsetsOfType(zoneInfo, transitionIndex, isDstToFind);
+            for (int j = 0; j < offsetsToTry.length; j++) {
+                int rawOffsetSeconds = zoneInfo.mRawOffset / 1000;
+                int jOffsetSeconds = rawOffsetSeconds + offsetsToTry[j];
+                int targetIntervalOffsetSeconds = targetInterval.getTotalOffsetSeconds();
+                int adjustmentSeconds = targetIntervalOffsetSeconds - jOffsetSeconds;
+                int adjustedWallTimeSeconds = checkedAdd(oldWallTimeSeconds, adjustmentSeconds);
+                if (targetInterval.containsWallTime(adjustedWallTimeSeconds)) {
+                    // Perform any arithmetic that might overflow.
+                    int returnValue = checkedSubtract(adjustedWallTimeSeconds,
+                            targetIntervalOffsetSeconds);
+
+                    // Modify field state and return the result.
+                    calendar.setTimeInMillis(adjustedWallTimeSeconds * 1000L);
+                    copyFieldsFromCalendar();
+                    this.isDst = targetInterval.getIsDst();
+                    this.gmtOffsetSeconds = targetIntervalOffsetSeconds;
+                    return returnValue;
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Return an array of offsets that have the requested {@code isDst} value.
+         * The {@code startIndex} is used as a starting point so transitions nearest
+         * to that index are returned first.
+         */
+        private static int[] getOffsetsOfType(ZoneInfo zoneInfo, int startIndex, int isDst) {
+            // +1 to account for the synthetic transition we invent before the first recorded one.
+            int[] offsets = new int[zoneInfo.mOffsets.length + 1];
+            boolean[] seen = new boolean[zoneInfo.mOffsets.length];
+            int numFound = 0;
+
+            int delta = 0;
+            boolean clampTop = false;
+            boolean clampBottom = false;
+            do {
+                // delta = { 1, -1, 2, -2, 3, -3...}
+                delta *= -1;
+                if (delta >= 0) {
+                    delta++;
+                }
+
+                int transitionIndex = startIndex + delta;
+                if (delta < 0 && transitionIndex < -1) {
+                    clampBottom = true;
+                    continue;
+                } else if (delta > 0 && transitionIndex >=  zoneInfo.mTypes.length) {
+                    clampTop = true;
+                    continue;
+                }
+
+                if (transitionIndex == -1) {
+                    if (isDst == 0) {
+                        // Synthesize a non-DST transition before the first transition we have
+                        // data for.
+                        offsets[numFound++] = 0; // offset of 0 from raw offset
+                    }
+                    continue;
+                }
+                byte type = zoneInfo.mTypes[transitionIndex];
+                if (!seen[type]) {
+                    if (zoneInfo.mIsDsts[type] == isDst) {
+                        offsets[numFound++] = zoneInfo.mOffsets[type];
+                    }
+                    seen[type] = true;
+                }
+            } while (!(clampTop && clampBottom));
+
+            int[] toReturn = new int[numFound];
+            System.arraycopy(offsets, 0, toReturn, 0, numFound);
+            return toReturn;
+        }
+
+        /**
+         * Find a time <em>in seconds</em> the same or close to {@code wallTimeSeconds} that
+         * satisfies {@code mustMatchDst}. The search begins around the timezone offset transition
+         * with {@code initialTransitionIndex}.
+         *
+         * <p>If {@code mustMatchDst} is {@code true} the method can only return times that
+         * use timezone offsets that satisfy the {@code this.isDst} requirements.
+         * If {@code this.isDst == -1} it means that any offset can be used.
+         *
+         * <p>If {@code mustMatchDst} is {@code false} any offset that covers the
+         * currently set time is acceptable. That is: if {@code this.isDst} == -1, any offset
+         * transition can be used, if it is 0 or 1 the offset used must match {@code this.isDst}.
+         *
+         * <p>Note: This method both uses and can modify field state. It returns the matching time
+         * in seconds if a match has been found and modifies fields, or it returns {@code null} and
+         * leaves the field state unmodified.
+         */
+        private Integer doWallTimeSearch(ZoneInfo zoneInfo, int initialTransitionIndex,
+                int wallTimeSeconds, boolean mustMatchDst) throws CheckedArithmeticException {
+
+            // The loop below starts at the initialTransitionIndex and radiates out from that point
+            // up to 24 hours in either direction by applying transitionIndexDelta to inspect
+            // adjacent transitions (0, -1, +1, -2, +2). 24 hours is used because we assume that no
+            // total offset from UTC is ever > 24 hours. clampTop and clampBottom are used to
+            // indicate whether the search has either searched > 24 hours or exhausted the
+            // transition data in that direction. The search stops when a match is found or if
+            // clampTop and clampBottom are both true.
+            // The match logic employed is determined by the mustMatchDst parameter.
+            final int MAX_SEARCH_SECONDS = 24 * 60 * 60;
+            boolean clampTop = false, clampBottom = false;
+            int loop = 0;
+            do {
+                // transitionIndexDelta = { 0, -1, 1, -2, 2,..}
+                int transitionIndexDelta = (loop + 1) / 2;
+                if (loop % 2 == 1) {
+                    transitionIndexDelta *= -1;
+                }
+                loop++;
+
+                // Only do any work in this iteration if we need to.
+                if (transitionIndexDelta > 0 && clampTop
+                        || transitionIndexDelta < 0 && clampBottom) {
+                    continue;
+                }
+
+                // Obtain the OffsetInterval to use.
+                int currentTransitionIndex = initialTransitionIndex + transitionIndexDelta;
+                OffsetInterval offsetInterval =
+                        OffsetInterval.create(zoneInfo, currentTransitionIndex);
+                if (offsetInterval == null) {
+                    // No transition exists with the index we tried: Stop searching in the
+                    // current direction.
+                    clampTop |= (transitionIndexDelta > 0);
+                    clampBottom |= (transitionIndexDelta < 0);
+                    continue;
+                }
+
+                // Match the wallTimeSeconds against the OffsetInterval.
+                if (mustMatchDst) {
+                    // Work out if the interval contains the wall time the caller specified and
+                    // matches their isDst value.
+                    if (offsetInterval.containsWallTime(wallTimeSeconds)) {
+                        if (this.isDst == -1 || offsetInterval.getIsDst() == this.isDst) {
+                            // This always returns the first OffsetInterval it finds that matches
+                            // the wall time and isDst requirements. If this.isDst == -1 this means
+                            // the result might be a DST or a non-DST answer for wall times that can
+                            // exist in two OffsetIntervals.
+                            int totalOffsetSeconds = offsetInterval.getTotalOffsetSeconds();
+                            int returnValue = checkedSubtract(wallTimeSeconds,
+                                    totalOffsetSeconds);
+
+                            copyFieldsFromCalendar();
+                            this.isDst = offsetInterval.getIsDst();
+                            this.gmtOffsetSeconds = totalOffsetSeconds;
+                            return returnValue;
+                        }
+                    }
+                } else {
+                    // To retain similar behavior to the old native implementation: if the caller is
+                    // asserting the same isDst value as the OffsetInterval we are looking at we do
+                    // not try to find an adjustment from another OffsetInterval of the same isDst
+                    // type. If you remove this you get different results in situations like a
+                    // DST -> DST transition or STD -> STD transition that results in an interval of
+                    // "skipped" wall time. For example: if 01:30 (DST) is invalid and between two
+                    // DST intervals, and the caller has passed isDst == 1, this results in a -1
+                    // being returned.
+                    if (isDst != offsetInterval.getIsDst()) {
+                        final int isDstToFind = isDst;
+                        Integer returnValue = tryOffsetAdjustments(zoneInfo, wallTimeSeconds,
+                                offsetInterval, currentTransitionIndex, isDstToFind);
+                        if (returnValue != null) {
+                            return returnValue;
+                        }
+                    }
+                }
+
+                // See if we can avoid another loop in the current direction.
+                if (transitionIndexDelta > 0) {
+                    // If we are searching forward and the OffsetInterval we have ends
+                    // > MAX_SEARCH_SECONDS after the wall time, we don't need to look any further
+                    // forward.
+                    boolean endSearch = offsetInterval.getEndWallTimeSeconds() - wallTimeSeconds
+                            > MAX_SEARCH_SECONDS;
+                    if (endSearch) {
+                        clampTop = true;
+                    }
+                } else if (transitionIndexDelta < 0) {
+                    boolean endSearch = wallTimeSeconds - offsetInterval.getStartWallTimeSeconds()
+                            >= MAX_SEARCH_SECONDS;
+                    if (endSearch) {
+                        // If we are searching backward and the OffsetInterval starts
+                        // > MAX_SEARCH_SECONDS before the wall time, we don't need to look any
+                        // further backwards.
+                        clampBottom = true;
+                    }
+                }
+            } while (!(clampTop && clampBottom));
+            return null;
+        }
+
+        public void setYear(int year) {
+            this.year = year;
+        }
+
+        public void setMonth(int month) {
+            this.month = month;
+        }
+
+        public void setMonthDay(int monthDay) {
+            this.monthDay = monthDay;
+        }
+
+        public void setHour(int hour) {
+            this.hour = hour;
+        }
+
+        public void setMinute(int minute) {
+            this.minute = minute;
+        }
+
+        public void setSecond(int second) {
+            this.second = second;
+        }
+
+        public void setWeekDay(int weekDay) {
+            this.weekDay = weekDay;
+        }
+
+        public void setYearDay(int yearDay) {
+            this.yearDay = yearDay;
+        }
+
+        public void setIsDst(int isDst) {
+            this.isDst = isDst;
+        }
+
+        public void setGmtOffset(int gmtoff) {
+            this.gmtOffsetSeconds = gmtoff;
+        }
+
+        public int getYear() {
+            return year;
+        }
+
+        public int getMonth() {
+            return month;
+        }
+
+        public int getMonthDay() {
+            return monthDay;
+        }
+
+        public int getHour() {
+            return hour;
+        }
+
+        public int getMinute() {
+            return minute;
+        }
+
+        public int getSecond() {
+            return second;
+        }
+
+        public int getWeekDay() {
+            return weekDay;
+        }
+
+        public int getYearDay() {
+            return yearDay;
+        }
+
+        public int getGmtOffset() {
+            return gmtOffsetSeconds;
+        }
+
+        public int getIsDst() {
+            return isDst;
+        }
+
+        private void copyFieldsToCalendar() {
+            calendar.set(Calendar.YEAR, year);
+            calendar.set(Calendar.MONTH, month);
+            calendar.set(Calendar.DAY_OF_MONTH, monthDay);
+            calendar.set(Calendar.HOUR_OF_DAY, hour);
+            calendar.set(Calendar.MINUTE, minute);
+            calendar.set(Calendar.SECOND, second);
+        }
+
+        private void copyFieldsFromCalendar() {
+            year = calendar.get(Calendar.YEAR);
+            month = calendar.get(Calendar.MONTH);
+            monthDay = calendar.get(Calendar.DAY_OF_MONTH);
+            hour = calendar.get(Calendar.HOUR_OF_DAY);
+            minute = calendar.get(Calendar.MINUTE);
+            second =  calendar.get(Calendar.SECOND);
+
+            // Calendar uses Sunday == 1. Android Time uses Sunday = 0.
+            weekDay = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+            // Calendar enumerates from 1, Android Time enumerates from 0.
+            yearDay = calendar.get(Calendar.DAY_OF_YEAR) - 1;
+        }
+
+        /**
+         * Find the transition in the {@code timezone} in effect at {@code timeSeconds}.
+         *
+         * <p>Returns an index in the range -1..timeZone.mTransitions.length - 1. -1 is used to
+         * indicate the time is before the first transition. Other values are an index into
+         * timeZone.mTransitions.
+         */
+        private static int findTransitionIndex(ZoneInfo timeZone, int timeSeconds) {
+            int matchingRawTransition = Arrays.binarySearch(timeZone.mTransitions, timeSeconds);
+            if (matchingRawTransition < 0) {
+                matchingRawTransition = ~matchingRawTransition - 1;
+            }
+            return matchingRawTransition;
+        }
+    }
+
+    /**
+     * A wall-time representation of a timezone offset interval.
+     *
+     * <p>Wall-time means "as it would appear locally in the timezone in which it applies".
+     * For example in 2007:
+     * PST was a -8:00 offset that ran until Mar 11, 2:00 AM.
+     * PDT was a -7:00 offset and ran from Mar 11, 3:00 AM to Nov 4, 2:00 AM.
+     * PST was a -8:00 offset and ran from Nov 4, 1:00 AM.
+     * Crucially this means that there was a "gap" after PST when PDT started, and an overlap when
+     * PDT ended and PST began.
+     *
+     * <p>For convenience all wall-time values are represented as the number of seconds since the
+     * beginning of the Unix epoch <em>in UTC</em>. To convert from a wall-time to the actual time
+     * in the offset it is necessary to <em>subtract</em> the {@code totalOffsetSeconds}.
+     * For example: If the offset in PST is -07:00 hours, then:
+     * timeInPstSeconds = wallTimeUtcSeconds - offsetSeconds
+     * i.e. 13:00 UTC - (-07:00) = 20:00 UTC = 13:00 PST
+     */
+    static class OffsetInterval {
+
+        private final int startWallTimeSeconds;
+        private final int endWallTimeSeconds;
+        private final int isDst;
+        private final int totalOffsetSeconds;
+
+        /**
+         * Creates an {@link OffsetInterval}.
+         *
+         * <p>If {@code transitionIndex} is -1, the transition is synthesized to be a non-DST offset
+         * that runs from the beginning of time until the first transition in {@code timeZone} and
+         * has an offset of {@code timezone.mRawOffset}. If {@code transitionIndex} is the last
+         * transition that transition is considered to run until the end of representable time.
+         * Otherwise, the information is extracted from {@code timeZone.mTransitions},
+         * {@code timeZone.mOffsets} an {@code timeZone.mIsDsts}.
+         */
+        public static OffsetInterval create(ZoneInfo timeZone, int transitionIndex)
+                throws CheckedArithmeticException {
+
+            if (transitionIndex < -1 || transitionIndex >= timeZone.mTransitions.length) {
+                return null;
+            }
+
+            int rawOffsetSeconds = timeZone.mRawOffset / 1000;
+            if (transitionIndex == -1) {
+                int endWallTimeSeconds = checkedAdd(timeZone.mTransitions[0], rawOffsetSeconds);
+                return new OffsetInterval(Integer.MIN_VALUE, endWallTimeSeconds, 0 /* isDst */,
+                        rawOffsetSeconds);
+            }
+
+            byte type = timeZone.mTypes[transitionIndex];
+            int totalOffsetSeconds = timeZone.mOffsets[type] + rawOffsetSeconds;
+            int endWallTimeSeconds;
+            if (transitionIndex == timeZone.mTransitions.length - 1) {
+                // If this is the last transition, make up the end time.
+                endWallTimeSeconds = Integer.MAX_VALUE;
+            } else {
+                endWallTimeSeconds = checkedAdd(timeZone.mTransitions[transitionIndex + 1],
+                        totalOffsetSeconds);
+            }
+            int isDst = timeZone.mIsDsts[type];
+            int startWallTimeSeconds =
+                    checkedAdd(timeZone.mTransitions[transitionIndex], totalOffsetSeconds);
+            return new OffsetInterval(
+                    startWallTimeSeconds, endWallTimeSeconds, isDst, totalOffsetSeconds);
+        }
+
+        private OffsetInterval(int startWallTimeSeconds, int endWallTimeSeconds, int isDst,
+                int totalOffsetSeconds) {
+            this.startWallTimeSeconds = startWallTimeSeconds;
+            this.endWallTimeSeconds = endWallTimeSeconds;
+            this.isDst = isDst;
+            this.totalOffsetSeconds = totalOffsetSeconds;
+        }
+
+        public boolean containsWallTime(long wallTimeSeconds) {
+            return wallTimeSeconds >= startWallTimeSeconds && wallTimeSeconds < endWallTimeSeconds;
+        }
+
+        public int getIsDst() {
+            return isDst;
+        }
+
+        public int getTotalOffsetSeconds() {
+            return totalOffsetSeconds;
+        }
+
+        public long getEndWallTimeSeconds() {
+            return endWallTimeSeconds;
+        }
+
+        public long getStartWallTimeSeconds() {
+            return startWallTimeSeconds;
+        }
+    }
+
+    /**
+     * An exception used to indicate an arithmetic overflow or underflow.
+     */
+    private static class CheckedArithmeticException extends Exception {
+    }
+
+    /**
+     * Calculate (a + b).
+     *
+     * @throws CheckedArithmeticException if overflow or underflow occurs
+     */
+    private static int checkedAdd(int a, int b) throws CheckedArithmeticException {
+        // Adapted from Guava IntMath.checkedAdd();
+        long result = (long) a + b;
+        if (result != (int) result) {
+            throw new CheckedArithmeticException();
+        }
+        return (int) result;
+    }
+
+    /**
+     * Calculate (a - b).
+     *
+     * @throws CheckedArithmeticException if overflow or underflow occurs
+     */
+    private static int checkedSubtract(int a, int b) throws CheckedArithmeticException {
+        // Adapted from Guava IntMath.checkedSubtract();
+        long result = (long) a - b;
+        if (result != (int) result) {
+            throw new CheckedArithmeticException();
+        }
+        return (int) result;
+    }
 }
diff --git a/luni/src/main/java/libcore/util/ZoneInfoDB.java b/luni/src/main/java/libcore/util/ZoneInfoDB.java
index 7ff377c..07aaf04 100644
--- a/luni/src/main/java/libcore/util/ZoneInfoDB.java
+++ b/luni/src/main/java/libcore/util/ZoneInfoDB.java
@@ -68,6 +68,28 @@
     private int[] byteOffsets;
     private int[] rawUtcOffsets;
 
+    /**
+     * ZoneInfo objects are worth caching because they are expensive to create.
+     * See http://b/8270865 for context.
+     */
+    private final static int CACHE_SIZE = 1;
+    private final BasicLruCache<String, ZoneInfo> cache =
+        new BasicLruCache<String, ZoneInfo>(CACHE_SIZE) {
+      @Override
+      protected ZoneInfo create(String id) {
+          // Work out where in the big data file this time zone is.
+          int index = Arrays.binarySearch(ids, id);
+          if (index < 0) {
+              return null;
+          }
+
+          BufferIterator it = mappedFile.bigEndianIterator();
+          it.skip(byteOffsets[index]);
+
+          return ZoneInfo.makeTimeZone(id, it);
+      }
+    };
+
     public TzData(String... paths) {
       for (String path : paths) {
         if (loadData(path)) {
@@ -206,17 +228,10 @@
       return zoneTab;
     }
 
-    public TimeZone makeTimeZone(String id) throws IOException {
-      // Work out where in the big data file this time zone is.
-      int index = Arrays.binarySearch(ids, id);
-      if (index < 0) {
-        return null;
-      }
-
-      BufferIterator it = mappedFile.bigEndianIterator();
-      it.skip(byteOffsets[index]);
-
-      return ZoneInfo.makeTimeZone(id, it);
+    public ZoneInfo makeTimeZone(String id) throws IOException {
+      ZoneInfo zoneInfo = cache.get(id);
+      // The object from the cache is cloned because TimeZone / ZoneInfo are mutable.
+      return zoneInfo == null ? null : (ZoneInfo) zoneInfo.clone();
     }
   }
 
diff --git a/luni/src/main/native/Register.cpp b/luni/src/main/native/Register.cpp
index 5db47b5..4aaa905 100644
--- a/luni/src/main/native/Register.cpp
+++ b/luni/src/main/native/Register.cpp
@@ -34,7 +34,6 @@
 
 #define REGISTER(FN) extern void FN(JNIEnv*); FN(env)
     REGISTER(register_android_system_OsConstants);
-    REGISTER(register_java_io_Console);
     REGISTER(register_java_io_File);
     REGISTER(register_java_io_ObjectStreamClass);
     REGISTER(register_java_lang_Character);
diff --git a/luni/src/main/native/android_system_OsConstants.cpp b/luni/src/main/native/android_system_OsConstants.cpp
index 87ebc21..92212b9 100644
--- a/luni/src/main/native/android_system_OsConstants.cpp
+++ b/luni/src/main/native/android_system_OsConstants.cpp
@@ -382,6 +382,12 @@
     initConstant(env, c, "POLLRDNORM", POLLRDNORM);
     initConstant(env, c, "POLLWRBAND", POLLWRBAND);
     initConstant(env, c, "POLLWRNORM", POLLWRNORM);
+#if defined(PR_GET_DUMPABLE)
+    initConstant(env, c, "PR_GET_DUMPABLE", PR_GET_DUMPABLE);
+#endif
+#if defined(PR_SET_DUMPABLE)
+    initConstant(env, c, "PR_SET_DUMPABLE", PR_SET_DUMPABLE);
+#endif
 #if defined(PR_SET_NO_NEW_PRIVS)
     initConstant(env, c, "PR_SET_NO_NEW_PRIVS", PR_SET_NO_NEW_PRIVS);
 #endif
diff --git a/luni/src/main/native/java_io_Console.cpp b/luni/src/main/native/java_io_Console.cpp
deleted file mode 100644
index 512bc72..0000000
--- a/luni/src/main/native/java_io_Console.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-#define LOG_TAG "Console"
-
-#include "JNIHelp.h"
-#include "JniConstants.h"
-
-#include <errno.h>
-#include <termios.h>
-#include <unistd.h>
-
-static jint Console_setEchoImpl(JNIEnv* env, jclass, jboolean on, jint previousState) {
-    termios state;
-    if (TEMP_FAILURE_RETRY(tcgetattr(STDIN_FILENO, &state)) == -1) {
-        jniThrowIOException(env, errno);
-        return 0;
-    }
-    if (on) {
-        state.c_lflag = previousState;
-    } else {
-        previousState = state.c_lflag;
-        state.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
-    }
-    if (TEMP_FAILURE_RETRY(tcsetattr(STDIN_FILENO, TCSAFLUSH, &state)) == -1){
-        jniThrowIOException(env, errno);
-        return 0;
-    }
-    return previousState;
-}
-
-static JNINativeMethod gMethods[] = {
-    NATIVE_METHOD(Console, setEchoImpl, "(ZI)I"),
-};
-void register_java_io_Console(JNIEnv* env) {
-    jniRegisterNativeMethods(env, "java/io/Console", gMethods, NELEM(gMethods));
-}
diff --git a/luni/src/main/native/java_lang_Character.cpp b/luni/src/main/native/java_lang_Character.cpp
index 2d1fcfc..4022f4b 100644
--- a/luni/src/main/native/java_lang_Character.cpp
+++ b/luni/src/main/native/java_lang_Character.cpp
@@ -33,7 +33,7 @@
     return u_charType(codePoint);
 }
 
-static jbyte Character_getDirectionalityImpl(JNIEnv*, jclass, jint codePoint) {
+static jbyte Character_getIcuDirectionality(JNIEnv*, jclass, jint codePoint) {
     return u_charDirection(codePoint);
 }
 
@@ -166,7 +166,7 @@
 
 static JNINativeMethod gMethods[] = {
     NATIVE_METHOD(Character, digitImpl, "!(II)I"),
-    NATIVE_METHOD(Character, getDirectionalityImpl, "!(I)B"),
+    NATIVE_METHOD(Character, getIcuDirectionality, "!(I)B"),
     NATIVE_METHOD(Character, getNameImpl, "(I)Ljava/lang/String;"),
     NATIVE_METHOD(Character, getNumericValueImpl, "!(I)I"),
     NATIVE_METHOD(Character, getTypeImpl, "!(I)I"),
diff --git a/luni/src/main/native/libcore_icu_ICU.cpp b/luni/src/main/native/libcore_icu_ICU.cpp
index 163d19c..df26b39 100644
--- a/luni/src/main/native/libcore_icu_ICU.cpp
+++ b/luni/src/main/native/libcore_icu_ICU.cpp
@@ -116,56 +116,6 @@
   return env->NewStringUTF(icuLocale.locale().getScript());
 }
 
-static jstring ICU_localeForLanguageTag(JNIEnv* env, jclass, jstring languageTag, jboolean strict) {
-    ScopedUtfChars languageTagChars(env, languageTag);
-    if (languageTagChars.c_str() == NULL) {
-      return NULL;
-    }
-
-    // Naively assume that in the average case, the size of
-    // the normalized language tag will be very nearly the same as the
-    // size of the input. This is generally true for language
-    // tags that are "simple" language-region-variant combinations
-    // that don't contain any grandfathered tags.
-    const size_t initialBufferSize = languageTagChars.size() + 32;
-    std::vector<char> buffer(initialBufferSize);
-    int32_t parsedLength = 0;
-
-    UErrorCode status = U_ZERO_ERROR;
-    size_t outputLength = uloc_forLanguageTag(languageTagChars.c_str(), &buffer[0],
-                                              buffer.size(), &parsedLength, &status);
-    // Note that we always allocate 1 char more than ICU asks us for,
-    // so that we can cleanly assert that it didn't overflow after the
-    // second call to uloc_forLanguageTag.
-    if (status == U_STRING_NOT_TERMINATED_WARNING) {
-        const size_t unterminated_size = buffer.size();
-        buffer.resize(unterminated_size + 1);
-        buffer[unterminated_size] = '\0';
-    } else if (status == U_BUFFER_OVERFLOW_ERROR) {
-        buffer.resize(outputLength + 1);
-        status = U_ZERO_ERROR;
-        outputLength = uloc_forLanguageTag(languageTagChars.c_str(), &buffer[0], buffer.size(),
-                                           &parsedLength, &status);
-    }
-
-    if (U_FAILURE(status) || outputLength >= buffer.size()) {
-        return NULL;
-    }
-
-    // By default, ICU will ignore all subtags starting at the first unparseable
-    // or invalid subtag. Our "strict" mode is specified to throw an error if
-    // that happens.
-    //
-    // NOTE: The cast is safe because parsedLength can never be negative thanks
-    // to the check above. ICU does not document any negative return values for
-    // that field, but check for it anyway.
-    if ((strict == JNI_TRUE) && (static_cast<uint32_t>(parsedLength) != languageTagChars.size())) {
-        return NULL;
-    }
-
-    return env->NewStringUTF(&buffer[0]);
-}
-
 static jint ICU_getCurrencyFractionDigits(JNIEnv* env, jclass, jstring javaCurrencyCode) {
   ScopedJavaUnicodeString currencyCode(env, javaCurrencyCode);
   if (!currencyCode.valid()) {
@@ -563,16 +513,16 @@
   return true;
 }
 
-static jboolean ICU_initLocaleDataNative(JNIEnv* env, jclass, jstring javaLocaleName, jobject localeData) {
-    ScopedUtfChars localeName(env, javaLocaleName);
-    if (localeName.c_str() == NULL) {
+static jboolean ICU_initLocaleDataNative(JNIEnv* env, jclass, jstring javaLanguageTag, jobject localeData) {
+    ScopedUtfChars languageTag(env, javaLanguageTag);
+    if (languageTag.c_str() == NULL) {
         return JNI_FALSE;
     }
-    if (localeName.size() >= ULOC_FULLNAME_CAPACITY) {
+    if (languageTag.size() >= ULOC_FULLNAME_CAPACITY) {
         return JNI_FALSE; // ICU has a fixed-length limit.
     }
 
-    ScopedIcuLocale icuLocale(env, javaLocaleName);
+    ScopedIcuLocale icuLocale(env, javaLanguageTag);
     if (!icuLocale.valid()) {
       return JNI_FALSE;
     }
@@ -580,27 +530,27 @@
     // Get the DateTimePatterns.
     UErrorCode status = U_ZERO_ERROR;
     bool foundDateTimePatterns = false;
-    for (LocaleNameIterator it(localeName.c_str(), status); it.HasNext(); it.Up()) {
+    for (LocaleNameIterator it(icuLocale.locale().getBaseName(), status); it.HasNext(); it.Up()) {
       if (getDateTimePatterns(env, localeData, it.Get())) {
           foundDateTimePatterns = true;
           break;
       }
     }
     if (!foundDateTimePatterns) {
-        ALOGE("Couldn't find ICU DateTimePatterns for %s", localeName.c_str());
+        ALOGE("Couldn't find ICU DateTimePatterns for %s", languageTag.c_str());
         return JNI_FALSE;
     }
 
     // Get the "Yesterday", "Today", and "Tomorrow" strings.
     bool foundYesterdayTodayAndTomorrow = false;
-    for (LocaleNameIterator it(localeName.c_str(), status); it.HasNext(); it.Up()) {
+    for (LocaleNameIterator it(icuLocale.locale().getBaseName(), status); it.HasNext(); it.Up()) {
       if (getYesterdayTodayAndTomorrow(env, localeData, icuLocale.locale(), it.Get())) {
         foundYesterdayTodayAndTomorrow = true;
         break;
       }
     }
     if (!foundYesterdayTodayAndTomorrow) {
-      ALOGE("Couldn't find ICU yesterday/today/tomorrow for %s", localeName.c_str());
+      ALOGE("Couldn't find ICU yesterday/today/tomorrow for %s", languageTag.c_str());
       return JNI_FALSE;
     }
 
@@ -671,14 +621,14 @@
     setNumberPatterns(env, localeData, icuLocale.locale());
     setDecimalFormatSymbolsData(env, localeData, icuLocale.locale());
 
-    jstring countryCode = env->NewStringUTF(Locale::createFromName(localeName.c_str()).getCountry());
+    jstring countryCode = env->NewStringUTF(icuLocale.locale().getCountry());
     jstring internationalCurrencySymbol = ICU_getCurrencyCode(env, NULL, countryCode);
     env->DeleteLocalRef(countryCode);
     countryCode = NULL;
 
     jstring currencySymbol = NULL;
     if (internationalCurrencySymbol != NULL) {
-        currencySymbol = ICU_getCurrencySymbol(env, NULL, javaLocaleName, internationalCurrencySymbol);
+        currencySymbol = ICU_getCurrencySymbol(env, NULL, javaLanguageTag, internationalCurrencySymbol);
     } else {
         internationalCurrencySymbol = env->NewStringUTF("XXX");
     }
@@ -820,7 +770,6 @@
     NATIVE_METHOD(ICU, getIcuVersion, "()Ljava/lang/String;"),
     NATIVE_METHOD(ICU, getScript, "(Ljava/lang/String;)Ljava/lang/String;"),
     NATIVE_METHOD(ICU, getUnicodeVersion, "()Ljava/lang/String;"),
-    NATIVE_METHOD(ICU, localeForLanguageTag, "(Ljava/lang/String;Z)Ljava/lang/String;"),
     NATIVE_METHOD(ICU, initLocaleDataNative, "(Ljava/lang/String;Llibcore/icu/LocaleData;)Z"),
     NATIVE_METHOD(ICU, setDefaultLocale, "(Ljava/lang/String;)V"),
     NATIVE_METHOD(ICU, toLowerCase, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"),
diff --git a/luni/src/main/native/libcore_icu_TimeZoneNames.cpp b/luni/src/main/native/libcore_icu_TimeZoneNames.cpp
index faf87f1..a7c9098 100644
--- a/luni/src/main/native/libcore_icu_TimeZoneNames.cpp
+++ b/luni/src/main/native/libcore_icu_TimeZoneNames.cpp
@@ -75,7 +75,6 @@
   const UDate now(Calendar::getNow());
 
   static const UnicodeString kUtc("UTC", 3, US_INV);
-  static const UnicodeString pacific_apia("Pacific/Apia", 12, US_INV);
 
   size_t id_count = env->GetArrayLength(result);
   for (size_t i = 0; i < id_count; ++i) {
@@ -104,11 +103,6 @@
       // every language).
       // TODO: check CLDR doesn't actually have this somewhere.
       long_std = short_std = long_dst = short_dst = kUtc;
-    } else if (zone_id.unicodeString() == pacific_apia) {
-      // icu4c 50 doesn't know Samoa has DST yet. http://b/7955614
-      if (long_dst.isBogus()) {
-        long_dst = "Samoa Daylight Time";
-      }
     }
 
     bool okay =
diff --git a/luni/src/main/native/libcore_io_Posix.cpp b/luni/src/main/native/libcore_io_Posix.cpp
index 2592fe7..51dd8a1 100644
--- a/luni/src/main/native/libcore_io_Posix.cpp
+++ b/luni/src/main/native/libcore_io_Posix.cpp
@@ -868,7 +868,7 @@
   int rc = pthread_threadid_np(NULL, &owner);  // Requires Mac OS 10.6
   if (rc != 0) {
     throwErrnoException(env, "gettid");
-    return NULL;
+    return 0;
   }
   return static_cast<jint>(owner);
 #else
diff --git a/luni/src/main/native/sub.mk b/luni/src/main/native/sub.mk
index 9ca5054..5b581f3 100644
--- a/luni/src/main/native/sub.mk
+++ b/luni/src/main/native/sub.mk
@@ -14,7 +14,6 @@
     android_system_OsConstants.cpp \
     canonicalize_path.cpp \
     cbigint.cpp \
-    java_io_Console.cpp \
     java_io_File.cpp \
     java_io_ObjectStreamClass.cpp \
     java_lang_Character.cpp \
@@ -58,8 +57,8 @@
     valueOf.cpp \
 
 LOCAL_C_INCLUDES += \
-    external/icu4c/common \
-    external/icu4c/i18n \
+    external/icu/icu4c/source/common \
+    external/icu/icu4c/source/i18n \
     external/openssl/include \
     external/zlib \
     system/core/include \
diff --git a/luni/src/test/java/libcore/icu/DateIntervalFormatTest.java b/luni/src/test/java/libcore/icu/DateIntervalFormatTest.java
index 18228f9..bac8138 100644
--- a/luni/src/test/java/libcore/icu/DateIntervalFormatTest.java
+++ b/luni/src/test/java/libcore/icu/DateIntervalFormatTest.java
@@ -38,6 +38,7 @@
     c.set(Calendar.HOUR_OF_DAY, 3);
     c.set(Calendar.MINUTE, 30);
     c.set(Calendar.SECOND, 15);
+    c.set(Calendar.MILLISECOND, 0);
     long timeWithCurrentYear = c.getTimeInMillis();
 
     c.set(Calendar.YEAR, 2009);
@@ -169,6 +170,7 @@
     Locale l = Locale.US;
     TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
     Calendar c = Calendar.getInstance(tz, l);
+    c.clear();
     c.set(2042, Calendar.JANUARY, 19, 3, 30);
     long jan_19_2042 = c.getTimeInMillis();
     c.set(2046, Calendar.OCTOBER, 4, 3, 30);
@@ -261,6 +263,45 @@
     assertEquals("January 1, 1970, 22:00 – January 2, 1970, 00:30", formatDateRange(l, utc, 22 * HOUR, 24 * HOUR + 30 * MINUTE, flags));
   }
 
+  // The fix for http://b/10560853 didn't work except for the day around the epoch, which was
+  // all the unit test checked!
+  public void test_single_day_events_later_than_epoch() throws Exception {
+    Locale l = Locale.US;
+    TimeZone utc = TimeZone.getTimeZone("UTC");
+
+    int flags = FORMAT_SHOW_TIME | FORMAT_24HOUR | FORMAT_SHOW_DATE;
+
+    Calendar c = Calendar.getInstance(utc, l);
+    c.clear();
+    c.set(1980, Calendar.JANUARY, 1, 0, 0);
+    long jan_1_1980 = c.getTimeInMillis();
+    assertEquals("January 1, 1980, 22:00 – 00:00",
+                 formatDateRange(l, utc, jan_1_1980 + 22 * HOUR, jan_1_1980 + 24 * HOUR, flags));
+    assertEquals("January 1, 1980, 22:00 – January 2, 1980, 00:30",
+                 formatDateRange(l, utc, jan_1_1980 + 22 * HOUR, jan_1_1980 + 24 * HOUR + 30 * MINUTE, flags));
+  }
+
+  // The fix for http://b/10560853 didn't work except for UTC, which was
+  // all the unit test checked!
+  public void test_single_day_events_not_in_UTC() throws Exception {
+    Locale l = Locale.US;
+    TimeZone pacific = TimeZone.getTimeZone("America/Los_Angeles");
+
+    int flags = FORMAT_SHOW_TIME | FORMAT_24HOUR | FORMAT_SHOW_DATE;
+
+    Calendar c = Calendar.getInstance(pacific, l);
+    c.clear();
+    c.set(1980, Calendar.JANUARY, 1, 0, 0);
+    long jan_1_1980 = c.getTimeInMillis();
+    assertEquals("January 1, 1980, 22:00 – 00:00",
+                 formatDateRange(l, pacific, jan_1_1980 + 22 * HOUR, jan_1_1980 + 24 * HOUR, flags));
+
+    c.set(1980, Calendar.JULY, 1, 0, 0);
+    long jul_1_1980 = c.getTimeInMillis();
+    assertEquals("July 1, 1980, 22:00 – 00:00",
+                 formatDateRange(l, pacific, jul_1_1980 + 22 * HOUR, jul_1_1980 + 24 * HOUR, flags));
+  }
+
   // http://b/10209343 - even if the caller didn't explicitly ask us to include the year,
   // we should do so for years other than the current year.
   public void test10209343_when_not_this_year() {
@@ -343,6 +384,7 @@
   public void test12004664() throws Exception {
     TimeZone utc = TimeZone.getTimeZone("UTC");
     Calendar c = Calendar.getInstance(utc, Locale.US);
+    c.clear();
     c.set(Calendar.YEAR, 1980);
     c.set(Calendar.MONTH, Calendar.FEBRUARY);
     c.set(Calendar.DAY_OF_MONTH, 10);
diff --git a/luni/src/test/java/libcore/icu/ICUTest.java b/luni/src/test/java/libcore/icu/ICUTest.java
index 3fa1f46..525d372 100644
--- a/luni/src/test/java/libcore/icu/ICUTest.java
+++ b/luni/src/test/java/libcore/icu/ICUTest.java
@@ -198,12 +198,6 @@
     Collator.getInstance(sr_Latn_BA);
     Collator.getInstance(sr_Latn_ME);
 
-    // TODO: This needs to be fixed. We shouldn't output attribute key
-    // expansions in the language tag or the toString output. The tests
-    // will fail with something like:
-    //
-    // expected:<de-u-co[-phonebk-kf-upper-kn]> but was:
-    // <de-u-co[lcasefirst-upper-collation-phonebook-colnumeric-yes]>
     Locale l = Locale.forLanguageTag("de-u-co-phonebk-kf-upper-kn");
     assertEquals("de__#u-co-phonebk-kf-upper-kn", l.toString());
     assertEquals("de-u-co-phonebk-kf-upper-kn", l.toLanguageTag());
diff --git a/luni/src/test/java/libcore/java/lang/CharacterTest.java b/luni/src/test/java/libcore/java/lang/CharacterTest.java
index 0028521..8c6f06f 100644
--- a/luni/src/test/java/libcore/java/lang/CharacterTest.java
+++ b/luni/src/test/java/libcore/java/lang/CharacterTest.java
@@ -278,65 +278,15 @@
     }
   }
 
-  public void test_UnicodeScript_forName() throws Exception {
-    try {
-      Character.UnicodeScript.forName(null);
-      fail();
-    } catch (NullPointerException expected) {
+  // http://b/15492712
+  public void test_getDirectionality() throws Exception {
+    // We shouldn't throw an exception for any code point.
+    for (int c = '\u0000'; c <= Character.MAX_VALUE; ++c) {
+      Character.getDirectionality(c);
     }
-
-    try {
-      Character.UnicodeScript.forName("existential_dilemmas");
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-
-    // Note that ICU is pretty lenient about block names and their abbreviations.
-    assertSame(Character.UnicodeScript.MALAYALAM, Character.UnicodeScript.forName("Malayalam"));
-    assertSame(Character.UnicodeScript.MALAYALAM, Character.UnicodeScript.forName("MalayaLAM"));
-    assertSame(Character.UnicodeScript.MALAYALAM, Character.UnicodeScript.forName("Mlym"));
-    assertSame(Character.UnicodeScript.MALAYALAM, Character.UnicodeScript.forName("MlYM"));
-
-    assertSame(Character.UnicodeScript.OLD_SOUTH_ARABIAN, Character.UnicodeScript.forName("Old_south_arabian"));
-
-    // NOTE: This test fails on the RI because they're much stricter in
-    // their matching. Strict enough that they fail on "Old south arabian", despite
-    // it being the official name AND the alias for this script.
-    assertSame(Character.UnicodeScript.OLD_SOUTH_ARABIAN, Character.UnicodeScript.forName("Old south arabian"));
-    assertSame(Character.UnicodeScript.OLD_SOUTH_ARABIAN, Character.UnicodeScript.forName("SARB"));
-
-    // A script that's recognized by ICU but not a part of the standard
-    // java script values.
-    try {
-      Character.UnicodeScript.forName("Old north arabian");
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-  }
-
-  public void test_UnicodeScript_of() throws Exception {
-    try {
-      Character.UnicodeScript.of(-1);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-
-    try {
-      Character.UnicodeScript.of(0xffffff);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-
-    // The example from the ICU4C unit tests.
-    assertSame(Character.UnicodeScript.MALAYALAM, Character.UnicodeScript.of(0x0D02));
-
-    // Special cases:
-    //
-    // 0640 is the ARABIC_TATWEEL, used by both Mandiac & Syriac
-    assertSame(Character.UnicodeScript.COMMON, Character.UnicodeScript.of(0x0640));
-    // 0300 is the COMBINING GRAVE ACCENT, which should be INHERITED because it's
-    // a nonspacing mark.
-    assertSame(Character.UnicodeScript.INHERITED, Character.UnicodeScript.of(0x0300));
-    assertSame(Character.UnicodeScript.COMMON, Character.UnicodeScript.of(0x0640));
+    assertEquals(Character.DIRECTIONALITY_UNDEFINED, Character.getDirectionality(0x2066));
+    assertEquals(Character.DIRECTIONALITY_UNDEFINED, Character.getDirectionality(0x2067));
+    assertEquals(Character.DIRECTIONALITY_UNDEFINED, Character.getDirectionality(0x2068));
+    assertEquals(Character.DIRECTIONALITY_UNDEFINED, Character.getDirectionality(0x2069));
   }
 }
diff --git a/luni/src/test/java/libcore/java/lang/DoubleTest.java b/luni/src/test/java/libcore/java/lang/DoubleTest.java
index 687d3e3..85281ba 100644
--- a/luni/src/test/java/libcore/java/lang/DoubleTest.java
+++ b/luni/src/test/java/libcore/java/lang/DoubleTest.java
@@ -127,4 +127,19 @@
         assertEquals(2.2250738585072014E-308, Double.parseDouble("2.22507385850720129978001e-308"));
         assertEquals(-2.2250738585072014E-308, Double.parseDouble("-2.2250738585072012e-308"));
     }
+
+    // https://code.google.com/p/android/issues/detail?id=71216
+    public void testParse_bug71216() {
+        try {
+            Double.parseDouble("73706943-9580-4406-a02f-0304e4324844");
+            fail();
+        } catch (NumberFormatException expected) {
+        }
+
+        try {
+            Double.parseDouble("bade999999999999999999999999999999");
+            fail();
+        } catch (NumberFormatException expected) {
+        }
+    }
 }
diff --git a/luni/src/test/java/libcore/java/lang/StringTest.java b/luni/src/test/java/libcore/java/lang/StringTest.java
index 7df852e..bf162e5 100644
--- a/luni/src/test/java/libcore/java/lang/StringTest.java
+++ b/luni/src/test/java/libcore/java/lang/StringTest.java
@@ -376,4 +376,71 @@
         assertEquals("[-77, -10, -64, -76]", Arrays.toString("出来".getBytes("gbk")));
         assertEquals("[-77, -10]", Arrays.toString("出".getBytes("gbk")));
     }
+
+    public void test_compareTo() throws Exception {
+        // For strings where a character differs, the result is
+        // the difference between the characters.
+        assertEquals(-1, "a".compareTo("b"));
+        assertEquals(-2, "a".compareTo("c"));
+        assertEquals(1, "b".compareTo("a"));
+        assertEquals(2, "c".compareTo("a"));
+
+        // For strings where the characters match up to the length of the shorter,
+        // the result is the difference between the strings' lengths.
+        assertEquals(0, "a".compareTo("a"));
+        assertEquals(-1, "a".compareTo("aa"));
+        assertEquals(-1, "a".compareTo("az"));
+        assertEquals(-2, "a".compareTo("aaa"));
+        assertEquals(-2, "a".compareTo("azz"));
+        assertEquals(-3, "a".compareTo("aaaa"));
+        assertEquals(-3, "a".compareTo("azzz"));
+        assertEquals(0, "a".compareTo("a"));
+        assertEquals(1, "aa".compareTo("a"));
+        assertEquals(1, "az".compareTo("a"));
+        assertEquals(2, "aaa".compareTo("a"));
+        assertEquals(2, "azz".compareTo("a"));
+        assertEquals(3, "aaaa".compareTo("a"));
+        assertEquals(3, "azzz".compareTo("a"));
+    }
+
+    public void test_compareToIgnoreCase() throws Exception {
+        // For strings where a character differs, the result is
+        // the difference between the characters.
+        assertEquals(-1, "a".compareToIgnoreCase("b"));
+        assertEquals(-1, "a".compareToIgnoreCase("B"));
+        assertEquals(-2, "a".compareToIgnoreCase("c"));
+        assertEquals(-2, "a".compareToIgnoreCase("C"));
+        assertEquals(1, "b".compareToIgnoreCase("a"));
+        assertEquals(1, "B".compareToIgnoreCase("a"));
+        assertEquals(2, "c".compareToIgnoreCase("a"));
+        assertEquals(2, "C".compareToIgnoreCase("a"));
+
+        // For strings where the characters match up to the length of the shorter,
+        // the result is the difference between the strings' lengths.
+        assertEquals(0, "a".compareToIgnoreCase("a"));
+        assertEquals(0, "a".compareToIgnoreCase("A"));
+        assertEquals(0, "A".compareToIgnoreCase("a"));
+        assertEquals(0, "A".compareToIgnoreCase("A"));
+        assertEquals(-1, "a".compareToIgnoreCase("aa"));
+        assertEquals(-1, "a".compareToIgnoreCase("aA"));
+        assertEquals(-1, "a".compareToIgnoreCase("Aa"));
+        assertEquals(-1, "a".compareToIgnoreCase("az"));
+        assertEquals(-1, "a".compareToIgnoreCase("aZ"));
+        assertEquals(-2, "a".compareToIgnoreCase("aaa"));
+        assertEquals(-2, "a".compareToIgnoreCase("AAA"));
+        assertEquals(-2, "a".compareToIgnoreCase("azz"));
+        assertEquals(-2, "a".compareToIgnoreCase("AZZ"));
+        assertEquals(-3, "a".compareToIgnoreCase("aaaa"));
+        assertEquals(-3, "a".compareToIgnoreCase("AAAA"));
+        assertEquals(-3, "a".compareToIgnoreCase("azzz"));
+        assertEquals(-3, "a".compareToIgnoreCase("AZZZ"));
+        assertEquals(1, "aa".compareToIgnoreCase("a"));
+        assertEquals(1, "aA".compareToIgnoreCase("a"));
+        assertEquals(1, "Aa".compareToIgnoreCase("a"));
+        assertEquals(1, "az".compareToIgnoreCase("a"));
+        assertEquals(2, "aaa".compareToIgnoreCase("a"));
+        assertEquals(2, "azz".compareToIgnoreCase("a"));
+        assertEquals(3, "aaaa".compareToIgnoreCase("a"));
+        assertEquals(3, "azzz".compareToIgnoreCase("a"));
+    }
 }
diff --git a/luni/src/test/java/libcore/java/math/CSVTest.java b/luni/src/test/java/libcore/java/math/CSVTest.java
new file mode 100644
index 0000000..9e151c3
--- /dev/null
+++ b/luni/src/test/java/libcore/java/math/CSVTest.java
@@ -0,0 +1,88 @@
+package libcore.java.math;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Standard single-input test framework for csv math tests
+ */
+public abstract class CSVTest extends junit.framework.TestCase {
+    /*
+     * csv file should have the following format:
+     * function,expected_output,input,extra_info
+     * e.g. cos,-0x1.0000000000000p+0,0x1.921fb54442d18p+1,cos(pi)
+     * for two input: function,expected_output,input1,input2,extra
+     * vogar classpath: obj/JAVA_LIBRARIES/core-tests-support_intermediates/javalib.jar
+     */
+
+    /**
+     * This is a set of functions in java.Math/StrictMath that take two inputs.
+     * These functions will call run2InputTest; others will call runTest.
+     */
+    protected static final Set<String> twoInputFunctions;
+    static {
+        Set<String> twoInFunc = new HashSet<String>();
+        twoInFunc.add("atan2");
+        twoInFunc.add("copySign");
+        twoInFunc.add("hypot");
+        twoInFunc.add("IEEEremainder");
+        twoInFunc.add("max");
+        twoInFunc.add("min");
+        twoInFunc.add("nextAfter");
+        twoInFunc.add("pow");
+        twoInFunc.add("scalb");
+        twoInputFunctions = Collections.unmodifiableSet(twoInFunc);
+    }
+
+    void TestCSVInputs(String[] csvFileNames) throws Exception {
+        int totalTests = 0;
+        for (String csvFileName : csvFileNames) {
+            String line = "";
+            BufferedReader br = null;
+
+            try {
+                br = new BufferedReader(new InputStreamReader(
+                        getClass().getResourceAsStream(csvFileName)));
+                while ((line = br.readLine()) != null) {
+                    if (line.charAt(0) != '#') {
+                        String[] testCase = line.split(",");
+                        runTest(testCase);
+                        totalTests++;
+                    }
+                }
+            } finally {
+                if (br != null) {
+                    br.close();
+                }
+            }
+        }
+        System.out.println("Completed running " + totalTests + " tests");
+    }
+
+    protected void runTest(String[] testCase) throws Exception {
+        String function = testCase[0];
+        double expectedOutput = Double.parseDouble(testCase[1]);
+        double input = Double.parseDouble(testCase[2]);
+        String extra = "";
+        if (twoInputFunctions.contains(function)) {
+            double input2 = Double.parseDouble(testCase[3]);
+            if (testCase.length > 4) {
+                extra = testCase[4];
+            }
+            run2InputTest(function, expectedOutput, input, input2, extra);
+        } else {
+            if (testCase.length > 3) {
+                extra = testCase[3];
+            }
+            runTest(function, expectedOutput, input, extra);
+        }
+    }
+
+    abstract void runTest(String func, double expectedOutput, double input,
+            String extra) throws Exception;
+
+    abstract void run2InputTest(String func, double expectedOutput, double input1, double input2, String extra) throws Exception;
+}
\ No newline at end of file
diff --git a/luni/src/test/java/libcore/java/math/RunCSVTests.java b/luni/src/test/java/libcore/java/math/RunCSVTests.java
new file mode 100644
index 0000000..0c107f1
--- /dev/null
+++ b/luni/src/test/java/libcore/java/math/RunCSVTests.java
@@ -0,0 +1,109 @@
+package libcore.java.math;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Tests functions in java.lang.Math
+ * Looks for the filenames in csvFileNames in tests/resources
+ * Tests functions and numbers found in those files.
+ * Run: vogar --classpath out/target/common/obj/JAVA_LIBRARIES/core-tests-support_intermediates/javalib.jar
+ * libcore/luni/src/test/java/libcore/java/math/RunCSVTests.java
+ */
+public class RunCSVTests extends CSVTest {
+    /** Stores ulps of error allowed for each function, if not 1 ulp.*/
+    private static final Map<String, Double> UlpMap;
+    static {
+        final HashMap<String, Double> funcUlps = new HashMap<String, Double>();
+        funcUlps.put("sinh", 2.5);
+        funcUlps.put("cosh", 2.5);
+        funcUlps.put("tanh", 2.5);
+        funcUlps.put("abs", 0.0);
+        funcUlps.put("signum", 0.0);
+        funcUlps.put("getExponent", 0.0);
+        funcUlps.put("toRadians", 0.0);
+        funcUlps.put("toDegrees", 0.0);
+        funcUlps.put("sqrt", 0.0);
+        funcUlps.put("ceil", 0.0);
+        funcUlps.put("floor", 0.0);
+        funcUlps.put("rint", 0.0);
+        funcUlps.put("atan2", 2.0);
+        funcUlps.put("round", 0.0);
+        funcUlps.put("max", 0.0);
+        funcUlps.put("min", 0.0);
+        funcUlps.put("copySign", 0.0);
+        funcUlps.put("nextAfter", 0.0);
+        funcUlps.put("scalb", 0.0);
+        UlpMap = Collections.unmodifiableMap(funcUlps);
+    }
+
+    public static final String[] csvFileNames = { "/math_tests.csv",
+            "/math_important_numbers.csv", "/math_java_only.csv" };
+
+    public void test_csv() throws Exception {
+        this.TestCSVInputs(csvFileNames);
+    }
+
+    /**
+     * Runs a standard single-input test using assertEquals.
+     * Allows error based on UlpMap, but defaults to 1 ulp.
+     */
+    @Override
+    void runTest(String func, double expectedOutput, double input, String extra)
+            throws Exception {
+        Class<Math> mathClass = Math.class;
+        Method m = mathClass.getMethod(func, new Class[] { Double.TYPE });
+        Object returnValue = m.invoke(null, input);
+
+        double allowedError;
+        if (UlpMap.containsKey(func)) {
+            allowedError = UlpMap.get(func)*Math.ulp(expectedOutput);
+        } else {
+            allowedError = Math.ulp(expectedOutput);
+        }
+
+        try {
+            assertEquals(extra + ": " + m + ": " + input + ": ", expectedOutput,
+                         (double) returnValue, allowedError);
+        } catch (ClassCastException e) {
+            assertEquals(extra + ": " + m + ": " + input + ": ", (int) expectedOutput,
+                         (int) returnValue, allowedError);
+        }
+    }
+
+    /**
+     * Runs a 2-input test using assertEquals.
+     * Allows error based on UlpMap, but defaults to 1 ulp.
+     */
+    @Override
+    void run2InputTest(String func, double expectedOutput, double input1,
+            double input2, String extra) throws Exception {
+        Class<Math> mathClass = Math.class;
+        Method m;
+        Object returnValue;
+        if (func.equals("scalb")) {
+            m = mathClass.getMethod(func, new Class[] { Double.TYPE, Integer.TYPE });
+            returnValue = m.invoke(null, input1, (int) input2);
+        } else {
+            m = mathClass.getMethod(func, new Class[] { Double.TYPE, Double.TYPE });
+            returnValue = m.invoke(null, input1, input2);
+        }
+
+        double allowedError;
+        if (UlpMap.containsKey(func)) {
+            allowedError = UlpMap.get(func)*Math.ulp(expectedOutput);
+        } else {
+            allowedError = Math.ulp(expectedOutput);
+        }
+
+        try {
+            assertEquals(extra + ": " + m + ": ", expectedOutput, (double) returnValue,
+                         allowedError);
+        } catch (ClassCastException e) {
+            assertEquals(extra + ": " + m + ": ", (int) expectedOutput, (int) returnValue,
+                         allowedError);
+        }
+    }
+}
diff --git a/luni/src/test/java/libcore/java/math/RunCSVTestsStrict.java b/luni/src/test/java/libcore/java/math/RunCSVTestsStrict.java
new file mode 100644
index 0000000..0443eb0
--- /dev/null
+++ b/luni/src/test/java/libcore/java/math/RunCSVTestsStrict.java
@@ -0,0 +1,62 @@
+package libcore.java.math;
+
+import java.lang.reflect.Method;
+
+/**
+ * Tests java.lang.StrictMath
+ * Looks for the filenames in csvFileNames in tests/resources
+ * Tests functions and numbers found in those files.
+ * Run: vogar --classpath out/target/common/obj/JAVA_LIBRARIES/core-tests-support_intermediates/javalib.jar
+ * libcore/luni/src/test/java/libcore/java/math/RunCSVTestsStrict.java
+ */
+public class RunCSVTestsStrict extends CSVTest {
+    public static final String[] csvFileNames = { "/math_tests.csv",
+            "/math_important_numbers.csv", "/math_java_only.csv" };
+
+    public void test_csv() throws Exception {
+        this.TestCSVInputs(csvFileNames);
+    }
+
+    /**
+     * Runs single-input test using assertEquals.
+     */
+    @Override
+    void runTest(String func, double expectedOutput, double input, String extra)
+            throws Exception {
+        Class<StrictMath> mathClass = StrictMath.class;
+        Method m = mathClass.getMethod(func, new Class[] { Double.TYPE });
+        Object returnValue = m.invoke(null, input);
+
+        try {
+            assertEquals(extra + ": " + m + ": " + input + ": ", expectedOutput,
+                    (double) returnValue, 0D);
+        } catch (ClassCastException e) {
+            assertEquals(extra + ": " + m + ": " + input + ": ", (int) expectedOutput,
+                    (int) returnValue, 0D);
+        }
+    }
+
+    /**
+     * Runs 2-input test using assertEquals.
+     */
+    @Override
+    void run2InputTest(String func, double expectedOutput, double input1,
+            double input2, String extra) throws Exception {
+        Class<StrictMath> mathClass = StrictMath.class;
+        Method m;
+        Object returnValue;
+        if (func.equals("scalb")) {
+            m = mathClass.getMethod(func, new Class[] { Double.TYPE, Integer.TYPE });
+            returnValue = m.invoke(null, input1, (int) input2);
+        } else {
+            m = mathClass.getMethod(func, new Class[] { Double.TYPE, Double.TYPE });
+            returnValue = m.invoke(null, input1, input2);
+        }
+
+        try {
+            assertEquals(extra + ": " + m + ": " , expectedOutput, (double) returnValue, 0D);
+        } catch (ClassCastException e) {
+            assertEquals(extra + ": " + m + ": ", (int) expectedOutput, (int) returnValue, 0D);
+        }
+    }
+}
diff --git a/luni/src/test/java/libcore/java/net/SocketTest.java b/luni/src/test/java/libcore/java/net/SocketTest.java
index b9ed99c..fb09be0 100644
--- a/luni/src/test/java/libcore/java/net/SocketTest.java
+++ b/luni/src/test/java/libcore/java/net/SocketTest.java
@@ -90,7 +90,7 @@
         // Open a local server port.
         ServerSocketChannel ssc = ServerSocketChannel.open();
         InetSocketAddress listenAddr = new InetSocketAddress(host, 0);
-        ssc.bind(listenAddr, 0);
+        ssc.socket().bind(listenAddr, 0);
         ServerSocket ss = ssc.socket();
 
         // Open a socket to the local port.
@@ -110,7 +110,7 @@
             in.socket().setTcpNoDelay(false);
         }
 
-        InetSocketAddress listenAddress = (InetSocketAddress) in.getLocalAddress();
+        InetSocketAddress listenAddress = (InetSocketAddress) in.socket().getLocalSocketAddress();
         InetSocketAddress outRemoteAddress = (InetSocketAddress) out.socket().getRemoteSocketAddress();
         InetSocketAddress outLocalAddress = (InetSocketAddress) out.socket().getLocalSocketAddress();
         InetSocketAddress inLocalAddress = (InetSocketAddress) in.socket().getLocalSocketAddress();
diff --git a/luni/src/test/java/libcore/java/nio/BufferTest.java b/luni/src/test/java/libcore/java/nio/BufferTest.java
index 613c6fa..c936cdf 100644
--- a/luni/src/test/java/libcore/java/nio/BufferTest.java
+++ b/luni/src/test/java/libcore/java/nio/BufferTest.java
@@ -20,6 +20,8 @@
 import java.io.File;
 import java.io.RandomAccessFile;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.nio.Buffer;
 import java.nio.BufferOverflowException;
 import java.nio.BufferUnderflowException;
 import java.nio.ByteBuffer;
@@ -600,17 +602,31 @@
         assertTrue(b.isDirect());
         // Check the buffer has an array of the right size.
         assertTrue(b.hasArray());
-        assertEquals(0, b.arrayOffset());
         byte[] array = b.array();
-        assertEquals(10, array.length);
+        assertTrue(array.length >= b.capacity());
+        assertEquals(10, b.capacity());
         // Check that writes to the array show up in the buffer.
         assertEquals(0, b.get(0));
-        array[0] = 1;
+        array[b.arrayOffset()] = 1;
         assertEquals(1, b.get(0));
         // Check that writes to the buffer show up in the array.
-        assertEquals(1, array[0]);
+        assertEquals(1, array[b.arrayOffset()]);
         b.put(0, (byte) 0);
-        assertEquals(0, array[0]);
+        assertEquals(0, array[b.arrayOffset()]);
+    }
+
+    // Test that direct byte buffers are 8 byte aligned.
+    // http://b/16449607
+    public void testDirectByteBufferAlignment() throws Exception {
+        ByteBuffer b = ByteBuffer.allocateDirect(10);
+        Field addressField = Buffer.class.getDeclaredField("effectiveDirectAddress");
+        assertTrue(addressField != null);
+        addressField.setAccessible(true);
+        long address = addressField.getLong(b);
+        // Check that the address field is aligned by 8.
+        // Normally reading this field happens in native code by calling
+        // GetDirectBufferAddress.
+        assertEquals(0, address % 8);
     }
 
     public void testSliceOffset() throws Exception {
@@ -618,14 +634,12 @@
         ByteBuffer buffer = ByteBuffer.allocate(10);
         buffer.get();
         ByteBuffer slice = buffer.slice();
-        assertEquals(0, buffer.arrayOffset());
-        assertEquals(1, slice.arrayOffset());
+        assertEquals(buffer.arrayOffset() + 1, slice.arrayOffset());
 
         ByteBuffer directBuffer = ByteBuffer.allocateDirect(10);
         directBuffer.get();
         ByteBuffer directSlice = directBuffer.slice();
-        assertEquals(0, directBuffer.arrayOffset());
-        assertEquals(1, directSlice.arrayOffset());
+        assertEquals(directBuffer.arrayOffset() + 1, directSlice.arrayOffset());
     }
 
     // http://code.google.com/p/android/issues/detail?id=16184
diff --git a/luni/src/test/java/libcore/java/nio/channels/DatagramChannelMulticastTest.java b/luni/src/test/java/libcore/java/nio/channels/DatagramChannelMulticastTest.java
deleted file mode 100644
index f0db3ba..0000000
--- a/luni/src/test/java/libcore/java/nio/channels/DatagramChannelMulticastTest.java
+++ /dev/null
@@ -1,1120 +0,0 @@
-package libcore.java.nio.channels;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
-
-import java.io.IOException;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.InterfaceAddress;
-import java.net.NetworkInterface;
-import java.net.SocketAddress;
-import java.net.SocketException;
-import java.net.StandardSocketOptions;
-import java.nio.ByteBuffer;
-import java.nio.channels.ClosedChannelException;
-import java.nio.channels.DatagramChannel;
-import java.nio.channels.MembershipKey;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-/**
- * Tests associated with multicast behavior of DatagramChannel.
- */
-public class DatagramChannelMulticastTest extends TestCase {
-
-  private static InetAddress lookup(String s) {
-    try {
-      return InetAddress.getByName(s);
-    } catch (IOException ex) {
-      throw new RuntimeException(ex);
-    }
-  }
-
-  // These IP addresses aren't inherently "good" or "bad"; they're just used like that.
-  // We use the "good" addresses for our actual group, and the "bad" addresses are for a group that
-  // we won't actually set up.
-  private static final InetAddress GOOD_MULTICAST_IPv4 = lookup("239.255.0.1");
-  private static final InetAddress BAD_MULTICAST_IPv4 = lookup("239.255.0.2");
-  private static final InetAddress GOOD_MULTICAST_IPv6 = lookup("ff05::7:7");
-  private static final InetAddress BAD_MULTICAST_IPv6 = lookup("ff05::7:8");
-
-  // Special addresses.
-  private static final InetAddress WILDCARD_IPv4 = lookup("0.0.0.0");
-  private static final InetAddress WILDCARD_IPv6 = lookup("::");
-
-  // Arbitrary unicast addresses. Used when the value doesn't actually matter. e.g. for source
-  // filters.
-  private static final InetAddress UNICAST_IPv4_1 = lookup("192.168.1.1");
-  private static final InetAddress UNICAST_IPv4_2 = lookup("192.168.1.2");
-  private static final InetAddress UNICAST_IPv6_1 = lookup("2001:db8::1");
-  private static final InetAddress UNICAST_IPv6_2 = lookup("2001:db8::2");
-
-  private List<NetworkInterface> ipv4networkInterfaces = new ArrayList<NetworkInterface>();
-  private List<NetworkInterface> ipv6networkInterfaces = new ArrayList<NetworkInterface>();
-  private NetworkInterface ipv4networkInterface;
-  private NetworkInterface ipv6networkInterface;
-  private NetworkInterface loopbackInterface;
-
-  @Override
-  protected void setUp() throws Exception {
-    // The loopback interface isn't actually useful for sending/receiving multicast messages but it
-    // can be used as a dummy for tests where that does not matter.
-    loopbackInterface = NetworkInterface.getByInetAddress(InetAddress.getLoopbackAddress());
-    assertNotNull(loopbackInterface);
-    assertTrue(loopbackInterface.isLoopback());
-    assertFalse(loopbackInterface.supportsMulticast());
-
-    Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
-    assertNotNull(interfaces);
-    // Only consider interfaces that have addresses associated with them. Otherwise tests don't work
-    // so well.
-    while (interfaces.hasMoreElements()) {
-      NetworkInterface networkInterface = interfaces.nextElement();
-      if (willWorkForMulticast(networkInterface)) {
-        Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
-        while (addresses.hasMoreElements()) {
-          final InetAddress nextAddress = addresses.nextElement();
-          if (nextAddress instanceof Inet4Address) {
-            ipv4networkInterfaces.add(networkInterface);
-          } else if (nextAddress instanceof Inet6Address) {
-            ipv6networkInterfaces.add(networkInterface);
-          }
-        }
-      }
-    }
-    assertTrue(
-        "Test environment must have network interfaces capable of both IPv4 and IPv6 multicast",
-        ipv4networkInterfaces.size() > 0 && ipv6networkInterfaces.size() > 0);
-    ipv4networkInterface = ipv4networkInterfaces.get(0);
-    ipv6networkInterface = ipv6networkInterfaces.get(0);
-  }
-
-  public void test_open() throws IOException {
-    DatagramChannel dc = DatagramChannel.open();
-
-    // Unlike MulticastSocket, DatagramChannel has SO_REUSEADDR set to false by default.
-    assertFalse(dc.getOption(StandardSocketOptions.SO_REUSEADDR));
-
-    // Confirm multicast loop is on by default as specified in the docs. Many tests in this class
-    // depend on this being true.
-    assertTrue(dc.getOption(StandardSocketOptions.IP_MULTICAST_LOOP));
-
-    assertNull(dc.getLocalAddress());
-    assertTrue(dc.isOpen());
-    assertFalse(dc.isConnected());
-
-    dc.close();
-  }
-
-  public void test_bind_null() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    assertNotNull(dc.getLocalAddress());
-    assertTrue(dc.isOpen());
-    assertFalse(dc.isConnected());
-
-    dc.close();
-    try {
-      dc.getLocalAddress();
-      fail();
-    } catch (ClosedChannelException expected) {
-    }
-    assertFalse(dc.isOpen());
-    assertFalse(dc.isConnected());
-  }
-
-  public void test_joinAnySource_afterClose() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    dc.close();
-    try {
-      dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-      fail();
-    } catch (ClosedChannelException expected) {
-    }
-  }
-
-  public void test_joinAnySource_nullGroupAddress() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(null, ipv4networkInterface);
-      fail();
-    } catch (NullPointerException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinAnySource_nullNetworkInterface() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(GOOD_MULTICAST_IPv4, null);
-      fail();
-    } catch (NullPointerException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinAnySource_nonMulticastGroupAddress_IPv4() throws Exception {
-    for (NetworkInterface networkInterface : ipv4networkInterfaces) {
-      test_joinAnySource_illegalArgumentExpected(networkInterface, UNICAST_IPv4_1);
-    }
-  }
-
-  public void test_joinAnySource_nonMulticastGroupAddress_IPv6() throws Exception {
-    for (NetworkInterface networkInterface : ipv6networkInterfaces) {
-      test_joinAnySource_illegalArgumentExpected(networkInterface, UNICAST_IPv6_1);
-    }
-  }
-
-  private void test_joinAnySource_illegalArgumentExpected(NetworkInterface networkInterface,
-      InetAddress group) throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(group, networkInterface);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinAnySource_IPv4() throws Exception {
-    test_joinAnySource(ipv4networkInterfaces, GOOD_MULTICAST_IPv4, BAD_MULTICAST_IPv4);
-  }
-
-  public void test_joinAnySource_IPv6() throws Exception {
-    test_joinAnySource(ipv6networkInterfaces, GOOD_MULTICAST_IPv6, BAD_MULTICAST_IPv6);
-  }
-
-  private void test_joinAnySource(
-      Iterable<NetworkInterface> networkInterfaces, InetAddress group, InetAddress group2)
-      throws Exception {
-    for (NetworkInterface networkInterface : networkInterfaces) {
-      // Set up a receiver join the group on networkInterface.
-      DatagramChannel receiverChannel = createReceiverChannel();
-      InetSocketAddress localAddress = (InetSocketAddress) receiverChannel.getLocalAddress();
-      receiverChannel.join(group, networkInterface);
-
-      // Send a message to the group we joined.
-      String msg = "Hello World";
-      sendMessage(group, localAddress.getPort(), msg, networkInterface);
-
-      // Now verify that we received the data as expected.
-      ByteBuffer recvBuffer = ByteBuffer.allocate(100);
-      SocketAddress sourceAddress = receiverChannel.receive(recvBuffer);
-      assertNotNull(sourceAddress);
-      assertEquals(msg, new String(recvBuffer.array(), 0, recvBuffer.position()));
-
-      // Send a message to the group we did not join.
-      String msg2 = "Hello World - Different Group";
-      sendMessage(group2, localAddress.getPort(), msg2, networkInterface);
-      recvBuffer.position(0);
-      // Now verify that we didn't receive the second message.
-      SocketAddress sourceAddress2 = receiverChannel.receive(recvBuffer);
-      assertNull(sourceAddress2);
-
-      receiverChannel.close();
-    }
-  }
-
-  public void test_joinAnySource_processLimit() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    for (byte i = 1; i <= 25; i++) {
-      InetAddress groupAddress = Inet4Address.getByName("239.255.0." + i);
-      try {
-        dc.join(groupAddress, ipv4networkInterface);
-      } catch (SocketException e) {
-        // There is a limit, that's ok according to the RI docs. For this test a lower bound of 20
-        // is used, which appears to be the default linux limit.
-        // See /proc/sys/net/ipv4/igmp_max_memberships.
-        assertTrue(i > 20);
-        break;
-      }
-    }
-
-    dc.close();
-  }
-
-  public void test_joinAnySource_blockLimit() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey key = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-    for (byte i = 1; i <= 15; i++) {
-      InetAddress sourceAddress = Inet4Address.getByName("10.0.0." + i);
-      try {
-        key.block(sourceAddress);
-      } catch (SocketException e) {
-        // There is a limit, that's ok according to the RI docs. For this test a lower bound of 10
-        // is used, which appears to be the default linux limit.
-        // See /proc/sys/net/ipv4/igmp_max_msf.
-        assertTrue(i > 10);
-        break;
-      }
-    }
-
-    dc.close();
-  }
-
-  /** Confirms that calling join() does not cause an implicit bind() to take place. */
-  public void test_joinAnySource_doesNotCauseBind_IPv4() throws Exception {
-    test_joinAnySource_doesNotCauseBind(ipv4networkInterfaces, GOOD_MULTICAST_IPv4);
-  }
-
-  public void test_joinAnySource_doesNotCauseBind_IPv6() throws Exception {
-    test_joinAnySource_doesNotCauseBind(ipv6networkInterfaces, GOOD_MULTICAST_IPv6);
-  }
-
-  private void test_joinAnySource_doesNotCauseBind(
-      Iterable<NetworkInterface> networkInterfaces, InetAddress group) throws IOException {
-    for (NetworkInterface networkInterface : networkInterfaces) {
-      DatagramChannel dc = DatagramChannel.open();
-      dc.join(group, networkInterface);
-      assertNull(dc.getLocalAddress());
-      dc.close();
-    }
-  }
-
-  public void test_joinAnySource_networkInterfaces() throws Exception {
-    // Check that we can join on specific interfaces and that we only receive if data is
-    // received on that interface. This test is only really useful on devices with multiple
-    // non-loopback interfaces.
-
-    ArrayList<NetworkInterface> realInterfaces = new ArrayList<NetworkInterface>();
-    Enumeration<NetworkInterface> theInterfaces = NetworkInterface.getNetworkInterfaces();
-    while (theInterfaces.hasMoreElements()) {
-      NetworkInterface thisInterface = theInterfaces.nextElement();
-      // Skip interfaces that do not support multicast - there's no point in proving they cannot
-      // send / receive multicast messages.
-      if (willWorkForMulticast(thisInterface)) {
-        realInterfaces.add(thisInterface);
-      }
-    }
-
-    for (NetworkInterface thisInterface : realInterfaces) {
-      // Get the first address on the interface.
-      Enumeration<InetAddress> addresses = thisInterface.getInetAddresses();
-
-      while (addresses.hasMoreElements()) {
-        InetAddress listenAddress = addresses.nextElement();
-
-        // Start a server which is joined to the group and has only asked for packets on this
-        // interface.
-        NetworkInterface sendingInterface;
-        InetAddress group;
-        if (listenAddress instanceof Inet4Address) {
-          group = GOOD_MULTICAST_IPv4;
-          sendingInterface = ipv4networkInterface;
-        } else {
-          group = GOOD_MULTICAST_IPv6;
-          sendingInterface = ipv6networkInterface;
-        }
-        DatagramChannel dc = createReceiverChannel();
-        InetSocketAddress localAddress = (InetSocketAddress) dc.getLocalAddress();
-        dc.join(group, thisInterface);
-
-        // Now send out a packet on sendingInterface. We should only see the packet if we send
-        // it on the same interface we are listening on (thisInterface).
-        String msg = "Hello World - Again " + thisInterface.getName();
-        sendMessage(group, localAddress.getPort(), msg, sendingInterface);
-
-        ByteBuffer recvBuffer = ByteBuffer.allocate(100);
-        SocketAddress sourceAddress = dc.receive(recvBuffer);
-        if (thisInterface.equals(sendingInterface)) {
-          assertEquals(msg, new String(recvBuffer.array(), 0, recvBuffer.position()));
-        } else {
-          assertNull(sourceAddress);
-        }
-
-        dc.close();
-      }
-    }
-  }
-
-  /** Confirms that the scope of each membership is network interface-level. */
-  public void test_join_canMixJoinTypesOnDifferentInterfaces() throws Exception {
-    DatagramChannel dc = DatagramChannel.open();
-    MembershipKey membershipKey1 = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-    MembershipKey membershipKey2 = dc.join(GOOD_MULTICAST_IPv4, loopbackInterface, UNICAST_IPv4_1);
-    assertNotSame(membershipKey1, membershipKey2);
-
-    dc.close();
-  }
-
-  public void test_joinAnySource_multiple_joins_IPv4()
-      throws Exception {
-    test_joinAnySource_multiple_joins(ipv4networkInterfaces, GOOD_MULTICAST_IPv4);
-  }
-
-  public void test_joinAnySource_multiple_joins_IPv6()
-      throws Exception {
-    test_joinAnySource_multiple_joins(ipv6networkInterfaces, GOOD_MULTICAST_IPv6);
-  }
-
-  private void test_joinAnySource_multiple_joins(
-      Iterable<NetworkInterface> networkInterfaces, InetAddress group) throws Exception {
-    for (NetworkInterface networkInterface : networkInterfaces) {
-      DatagramChannel dc = createReceiverChannel();
-
-      MembershipKey membershipKey1 = dc.join(group, networkInterface);
-
-      MembershipKey membershipKey2 = dc.join(group, loopbackInterface);
-      assertFalse(membershipKey1.equals(membershipKey2));
-
-      MembershipKey membershipKey1_2 = dc.join(group, networkInterface);
-      assertEquals(membershipKey1, membershipKey1_2);
-
-      dc.close();
-    }
-  }
-
-  public void test_joinAnySource_multicastLoopOption_IPv4() throws Exception {
-    test_joinAnySource_multicastLoopOption(ipv4networkInterfaces, GOOD_MULTICAST_IPv4);
-  }
-
-  public void test_joinAnySource_multicastLoopOption_IPv6() throws Exception {
-    test_joinAnySource_multicastLoopOption(ipv6networkInterfaces, GOOD_MULTICAST_IPv6);
-  }
-
-  private void test_joinAnySource_multicastLoopOption(
-      Iterable<NetworkInterface> networkInterfaces, InetAddress group) throws Exception {
-    final String message = "Hello, world!";
-
-    for (NetworkInterface networkInterface : networkInterfaces) {
-      DatagramChannel dc = DatagramChannel.open();
-      configureChannelForReceiving(dc);
-      dc.bind(null /* leave the OS to determine the port, and use the wildcard address */);
-
-      // Make sure that the sent packets will be sent via the interface we will be joining with.
-      dc.setOption(StandardSocketOptions.IP_MULTICAST_IF, networkInterface);
-      dc.join(group, networkInterface);
-
-      // Test with loop on.
-      dc.setOption(StandardSocketOptions.IP_MULTICAST_LOOP, true /* enable loop */);
-
-      InetSocketAddress localAddress = (InetSocketAddress) dc.getLocalAddress();
-
-      // Send the datagram.
-      sendMessage(dc, message, new InetSocketAddress(group, localAddress.getPort()));
-
-      // Receive the datagram.
-      ByteBuffer recvBuffer = ByteBuffer.allocate(100);
-      SocketAddress sourceAddress = dc.receive(recvBuffer);
-      assertNotNull(sourceAddress);
-
-      String recvMessage = new String(recvBuffer.array(), 0, recvBuffer.position());
-      assertEquals(message, recvMessage);
-
-      // Turn off loop.
-      dc.setOption(StandardSocketOptions.IP_MULTICAST_LOOP, false /* enable loopback */);
-
-      // Send another datagram.
-      recvBuffer.position(0);
-      sendMessage(dc, message, new InetSocketAddress(group, localAddress.getPort()));
-
-      SocketAddress sourceAddress2 = dc.receive(recvBuffer);
-      assertNull(sourceAddress2);
-
-      dc.close();
-    }
-  }
-
-  public void testMembershipKeyAccessors_IPv4() throws Exception {
-    testMembershipKeyAccessors(ipv4networkInterfaces, GOOD_MULTICAST_IPv4);
-  }
-
-  public void testMembershipKeyAccessors_IPv6() throws Exception {
-    testMembershipKeyAccessors(ipv6networkInterfaces, GOOD_MULTICAST_IPv6);
-  }
-
-  private void testMembershipKeyAccessors(
-      Iterable<NetworkInterface> networkInterfaces, InetAddress group) throws Exception {
-    for (NetworkInterface networkInterface : networkInterfaces) {
-      DatagramChannel dc = createReceiverChannel();
-
-      MembershipKey key = dc.join(group, networkInterface);
-      assertSame(dc, key.channel());
-      assertSame(group, key.group());
-      assertTrue(key.isValid());
-      assertSame(networkInterface, key.networkInterface());
-      assertNull(key.sourceAddress());
-    }
-  }
-
-  public void test_dropAnySource_twice_IPv4() throws Exception {
-    test_dropAnySource_twice(ipv4networkInterfaces, GOOD_MULTICAST_IPv4);
-  }
-
-  public void test_dropAnySource_twice_IPv6() throws Exception {
-    test_dropAnySource_twice(ipv6networkInterfaces, GOOD_MULTICAST_IPv6);
-  }
-
-  private void test_dropAnySource_twice(
-      Iterable<NetworkInterface> networkInterfaces, InetAddress group)
-      throws Exception {
-    for (NetworkInterface networkInterface : networkInterfaces) {
-      DatagramChannel dc = createReceiverChannel();
-      MembershipKey membershipKey = dc.join(group, networkInterface);
-
-      assertTrue(membershipKey.isValid());
-      membershipKey.drop();
-      assertFalse(membershipKey.isValid());
-
-      // Try to leave a group we are no longer a member of. It should do nothing.
-      membershipKey.drop();
-
-      dc.close();
-    }
-  }
-
-  public void test_close_invalidatesMembershipKey() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-
-    assertTrue(membershipKey.isValid());
-
-    dc.close();
-
-    assertFalse(membershipKey.isValid());
-  }
-
-  public void test_block_null() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-    try {
-      membershipKey.block(null);
-      fail();
-    } catch (NullPointerException expected) {
-    }
-
-    dc.close();
-  }
-
-  public void test_block_mixedAddressTypes_IPv4() throws Exception {
-    test_block_illegalArgument(ipv4networkInterfaces, GOOD_MULTICAST_IPv4, UNICAST_IPv6_1);
-  }
-
-  public void test_block_mixedAddressTypes_IPv6() throws Exception {
-    test_block_illegalArgument(ipv6networkInterfaces, GOOD_MULTICAST_IPv6, UNICAST_IPv4_1);
-  }
-
-  private void test_block_illegalArgument(
-      Iterable<NetworkInterface> networkInterfaces, InetAddress groupAddress,
-      InetAddress badBlockAddress) throws Exception {
-
-    for (NetworkInterface networkInterface : networkInterfaces) {
-      DatagramChannel dc = createReceiverChannel();
-      MembershipKey membershipKey = dc.join(groupAddress, networkInterface);
-      try {
-        membershipKey.block(badBlockAddress);
-        fail();
-      } catch (IllegalArgumentException expected) {
-      }
-
-      dc.close();
-    }
-  }
-
-  public void test_block_cannotBlockWithSourceSpecificMembership() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey =
-        dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface, UNICAST_IPv4_1);
-    try {
-      membershipKey.block(UNICAST_IPv4_2);
-      fail();
-    } catch (IllegalStateException expected) {
-    }
-
-    dc.close();
-  }
-
-  public void test_block_multipleBlocksIgnored() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-    membershipKey.block(UNICAST_IPv4_1);
-
-    MembershipKey membershipKey2 = membershipKey.block(UNICAST_IPv4_1);
-    assertSame(membershipKey2, membershipKey);
-
-    dc.close();
-  }
-
-  public void test_block_wildcardAddress() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-    try {
-      membershipKey.block(WILDCARD_IPv4);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-
-    dc.close();
-  }
-
-  public void test_unblock_multipleUnblocksFail() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-
-    try {
-      membershipKey.unblock(UNICAST_IPv4_1);
-      fail();
-    } catch (IllegalStateException expected) {
-    }
-
-    assertTrue(membershipKey.isValid());
-
-    membershipKey.block(UNICAST_IPv4_1);
-    membershipKey.unblock(UNICAST_IPv4_1);
-
-    try {
-      membershipKey.unblock(UNICAST_IPv4_1);
-      fail();
-    } catch (IllegalStateException expected) {
-    }
-
-    dc.close();
-  }
-
-  public void test_unblock_null() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-    membershipKey.block(UNICAST_IPv4_1);
-
-    try {
-      membershipKey.unblock(null);
-      fail();
-    } catch (IllegalStateException expected) {
-      // Either of these exceptions are fine.
-    } catch (NullPointerException expected) {
-      // Either of these exception are fine.
-    }
-
-    dc.close();
-  }
-
-  public void test_unblock_mixedAddressTypes_IPv4() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface);
-    try {
-      membershipKey.unblock(UNICAST_IPv6_1);
-      fail();
-    } catch (IllegalStateException expected) {
-      // Either of these exceptions are fine.
-    } catch (IllegalArgumentException expected) {
-      // Either of these exceptions are fine.
-    }
-
-    dc.close();
-  }
-
-  public void test_unblock_mixedAddressTypes_IPv6() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(GOOD_MULTICAST_IPv6, ipv6networkInterface);
-    try {
-      membershipKey.unblock(UNICAST_IPv4_1);
-      fail();
-    } catch (IllegalStateException expected) {
-      // Either of these exceptions are fine.
-    } catch (IllegalArgumentException expected) {
-      // Either of these exceptions are fine.
-    }
-
-    dc.close();
-  }
-
-  /** Checks that block() works when the receiver is bound to the multicast group address */
-  public void test_block_filtersAsExpected_groupBind_IPv4() throws Exception {
-    for (NetworkInterface networkInterface : ipv4networkInterfaces) {
-      InetAddress ipv4LocalAddress = getLocalIpv4Address(networkInterface);
-      test_block_filtersAsExpected(
-          networkInterface,
-          ipv4LocalAddress /* senderBindAddress */,
-          GOOD_MULTICAST_IPv4 /* receiverBindAddress */,
-          GOOD_MULTICAST_IPv4 /* groupAddress */);
-    }
-  }
-
-  /** Checks that block() works when the receiver is bound to the multicast group address */
-  public void test_block_filtersAsExpected_groupBind_IPv6() throws Exception {
-    for (NetworkInterface networkInterface : ipv6networkInterfaces) {
-      InetAddress ipv6LocalAddress = getLocalIpv6Address(networkInterface);
-      test_block_filtersAsExpected(
-          networkInterface,
-          ipv6LocalAddress /* senderBindAddress */,
-          GOOD_MULTICAST_IPv6 /* receiverBindAddress */,
-          GOOD_MULTICAST_IPv6 /* groupAddress */);
-    }
-  }
-
-  /** Checks that block() works when the receiver is bound to the "any" address */
-  public void test_block_filtersAsExpected_anyBind_IPv4() throws Exception {
-    for (NetworkInterface networkInterface : ipv4networkInterfaces) {
-      InetAddress ipv4LocalAddress = getLocalIpv4Address(networkInterface);
-      test_block_filtersAsExpected(
-          networkInterface,
-          ipv4LocalAddress /* senderBindAddress */,
-          WILDCARD_IPv4 /* receiverBindAddress */,
-          GOOD_MULTICAST_IPv4 /* groupAddress */);
-    }
-  }
-
-  /** Checks that block() works when the receiver is bound to the "any" address */
-  public void test_block_filtersAsExpected_anyBind_IPv6() throws Exception {
-    for (NetworkInterface networkInterface : ipv6networkInterfaces) {
-      InetAddress ipv6LocalAddress = getLocalIpv6Address(networkInterface);
-      test_block_filtersAsExpected(
-          networkInterface,
-          ipv6LocalAddress /* senderBindAddress */,
-          WILDCARD_IPv6 /* receiverBindAddress */,
-          GOOD_MULTICAST_IPv6 /* groupAddress */);
-    }
-  }
-
-  private void test_block_filtersAsExpected(
-      NetworkInterface networkInterface, InetAddress senderBindAddress,
-      InetAddress receiverBindAddress, InetAddress groupAddress) throws Exception {
-
-    DatagramChannel sendingChannel = DatagramChannel.open();
-    // In order to block a sender the sender's address must be known. The sendingChannel is
-    // explicitly bound to a known, non-loopback address.
-    sendingChannel.bind(new InetSocketAddress(senderBindAddress, 0));
-    InetSocketAddress sendingAddress = (InetSocketAddress) sendingChannel.getLocalAddress();
-
-    DatagramChannel receivingChannel = DatagramChannel.open();
-    configureChannelForReceiving(receivingChannel);
-    receivingChannel.bind(
-        new InetSocketAddress(receiverBindAddress, 0) /* local port left to the OS to determine */);
-    InetSocketAddress localReceivingAddress =
-        (InetSocketAddress) receivingChannel.getLocalAddress();
-    InetSocketAddress groupSocketAddress =
-        new InetSocketAddress(groupAddress, localReceivingAddress.getPort());
-    MembershipKey membershipKey =
-        receivingChannel.join(groupSocketAddress.getAddress(), networkInterface);
-
-    ByteBuffer receiveBuffer = ByteBuffer.allocate(10);
-
-    // Send a message. It should be received.
-    String msg1 = "Hello1";
-    sendMessage(sendingChannel, msg1, groupSocketAddress);
-    InetSocketAddress sourceAddress1 = (InetSocketAddress) receivingChannel.receive(receiveBuffer);
-    assertEquals(sendingAddress, sourceAddress1);
-    assertEquals(msg1, new String(receiveBuffer.array(), 0, receiveBuffer.position()));
-
-    // Now block the sender.
-    membershipKey.block(sendingAddress.getAddress());
-
-    // Send a message. It should be filtered.
-    String msg2 = "Hello2";
-    sendMessage(sendingChannel, msg2, groupSocketAddress);
-    receiveBuffer.position(0);
-    InetSocketAddress sourceAddress2 = (InetSocketAddress) receivingChannel.receive(receiveBuffer);
-    assertNull(sourceAddress2);
-
-    // Now unblock the sender.
-    membershipKey.unblock(sendingAddress.getAddress());
-
-    // Send a message. It should be received.
-    String msg3 = "Hello3";
-    sendMessage(sendingChannel, msg3, groupSocketAddress);
-    receiveBuffer.position(0);
-    InetSocketAddress sourceAddress3 = (InetSocketAddress) receivingChannel.receive(receiveBuffer);
-    assertEquals(sourceAddress3, sendingAddress);
-    assertEquals(msg3, new String(receiveBuffer.array(), 0, receiveBuffer.position()));
-
-    sendingChannel.close();
-    receivingChannel.close();
-  }
-
-  public void test_joinSourceSpecific_nullGroupAddress() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(null, ipv4networkInterface, UNICAST_IPv4_1);
-      fail();
-    } catch (NullPointerException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_afterClose() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    dc.close();
-    try {
-      dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface, UNICAST_IPv4_1);
-      fail();
-    } catch (ClosedChannelException expected) {
-    }
-  }
-
-  public void test_joinSourceSpecific_nullNetworkInterface() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(GOOD_MULTICAST_IPv4, null, UNICAST_IPv4_1);
-      fail();
-    } catch (NullPointerException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_nonMulticastGroupAddress_IPv4() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(UNICAST_IPv4_1, ipv4networkInterface, UNICAST_IPv4_1);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_nonMulticastGroupAddress_IPv6() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(UNICAST_IPv6_1, ipv6networkInterface, UNICAST_IPv6_1);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_nullSourceAddress_IPv4() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface, null);
-      fail();
-    } catch (NullPointerException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_nullSourceAddress_IPv6() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(GOOD_MULTICAST_IPv6, ipv6networkInterface, null);
-      fail();
-    } catch (NullPointerException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_mixedAddressTypes() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface, UNICAST_IPv6_1);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    try {
-      dc.join(GOOD_MULTICAST_IPv6, ipv6networkInterface, UNICAST_IPv4_1);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_nonUnicastSourceAddress_IPv4() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface, BAD_MULTICAST_IPv4);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_nonUnicastSourceAddress_IPv6() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    try {
-      dc.join(GOOD_MULTICAST_IPv6, ipv6networkInterface, BAD_MULTICAST_IPv6);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    dc.close();
-  }
-
-  public void test_joinSourceSpecific_multipleSourceAddressLimit() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    for (byte i = 1; i <= 20; i++) {
-      InetAddress sourceAddress = Inet4Address.getByAddress(new byte[] { 10, 0, 0, i});
-      try {
-        dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface, sourceAddress);
-      } catch (SocketException e) {
-        // There is a limit, that's ok according to the RI docs. For this test a lower bound of 10
-        // is used, which appears to be the default linux limit. See /proc/sys/net/ipv4/igmp_max_msf
-        assertTrue(i > 10);
-        break;
-      }
-    }
-
-    dc.close();
-  }
-
-  /**
-   * Checks that a source-specific join() works when the receiver is bound to the multicast group
-   * address
-   */
-  public void test_joinSourceSpecific_groupBind_IPv4() throws Exception {
-    for (NetworkInterface networkInterface : ipv4networkInterfaces) {
-      InetAddress ipv4LocalAddress = getLocalIpv4Address(networkInterface);
-      test_joinSourceSpecific(
-          networkInterface,
-          ipv4LocalAddress /* senderBindAddress */,
-          GOOD_MULTICAST_IPv4 /* receiverBindAddress */,
-          GOOD_MULTICAST_IPv4 /* groupAddress */,
-          UNICAST_IPv4_1 /* badSenderAddress */);
-    }
-  }
-
-  /**
-   * Checks that a source-specific join() works when the receiver is bound to the multicast group
-   * address
-   */
-  public void test_joinSourceSpecific_groupBind_IPv6() throws Exception {
-    for (NetworkInterface networkInterface : ipv6networkInterfaces) {
-      InetAddress ipv6LocalAddress = getLocalIpv6Address(networkInterface);
-      test_joinSourceSpecific(
-          networkInterface,
-          ipv6LocalAddress /* senderBindAddress */,
-          GOOD_MULTICAST_IPv6 /* receiverBindAddress */,
-          GOOD_MULTICAST_IPv6 /* groupAddress */,
-          UNICAST_IPv6_1 /* badSenderAddress */);
-    }
-  }
-
-  /** Checks that a source-specific join() works when the receiver is bound to the "any" address */
-  public void test_joinSourceSpecific_anyBind_IPv4() throws Exception {
-    for (NetworkInterface networkInterface : ipv4networkInterfaces) {
-      InetAddress ipv4LocalAddress = getLocalIpv4Address(networkInterface);
-      test_joinSourceSpecific(
-          networkInterface,
-          ipv4LocalAddress /* senderBindAddress */,
-          WILDCARD_IPv4 /* receiverBindAddress */,
-          GOOD_MULTICAST_IPv4 /* groupAddress */,
-          UNICAST_IPv4_1 /* badSenderAddress */);
-    }
-  }
-
-  /** Checks that a source-specific join() works when the receiver is bound to the "any" address */
-  public void test_joinSourceSpecific_anyBind_IPv6() throws Exception {
-    for (NetworkInterface networkInterface : ipv6networkInterfaces) {
-      InetAddress ipv6LocalAddress = getLocalIpv6Address(networkInterface);
-      test_joinSourceSpecific(
-          networkInterface,
-          ipv6LocalAddress /* senderBindAddress */,
-          WILDCARD_IPv6 /* receiverBindAddress */,
-          GOOD_MULTICAST_IPv6 /* groupAddress */,
-          UNICAST_IPv6_1 /* badSenderAddress */);
-    }
-  }
-
-  /**
-   * Checks that the source-specific membership is correctly source-filtered.
-   *
-   * @param networkInterface the network interface to use when joining
-   * @param senderBindAddress the address to bind the sender socket to
-   * @param receiverBindAddress the address to bind the receiver socket to
-   * @param groupAddress the group address to join
-   * @param badSenderAddress a unicast address to join to perform a negative test
-   */
-  private void test_joinSourceSpecific(
-      NetworkInterface networkInterface, InetAddress senderBindAddress,
-      InetAddress receiverBindAddress, InetAddress groupAddress, InetAddress badSenderAddress)
-      throws Exception {
-    DatagramChannel sendingChannel = DatagramChannel.open();
-    // In order to be source-specific the sender's address must be known. The sendingChannel is
-    // explicitly bound to a known, non-loopback address.
-    sendingChannel.bind(new InetSocketAddress(senderBindAddress, 0));
-    InetSocketAddress sendingAddress = (InetSocketAddress) sendingChannel.getLocalAddress();
-
-    DatagramChannel receivingChannel = DatagramChannel.open();
-    configureChannelForReceiving(receivingChannel);
-    receivingChannel.bind(
-        new InetSocketAddress(receiverBindAddress, 0) /* local port left to the OS to determine */);
-
-    InetSocketAddress localReceivingAddress =
-        (InetSocketAddress) receivingChannel.getLocalAddress();
-    InetSocketAddress groupSocketAddress =
-        new InetSocketAddress(groupAddress, localReceivingAddress.getPort());
-    MembershipKey membershipKey1 = receivingChannel
-        .join(groupSocketAddress.getAddress(), networkInterface, senderBindAddress);
-
-    ByteBuffer receiveBuffer = ByteBuffer.allocate(10);
-
-    // Send a message. It should be received.
-    String msg1 = "Hello1";
-    sendMessage(sendingChannel, msg1, groupSocketAddress);
-    InetSocketAddress sourceAddress1 = (InetSocketAddress) receivingChannel.receive(receiveBuffer);
-    assertEquals(sourceAddress1, sendingAddress);
-    assertEquals(msg1, new String(receiveBuffer.array(), 0, receiveBuffer.position()));
-
-    membershipKey1.drop();
-
-    receivingChannel.join(groupSocketAddress.getAddress(), networkInterface, badSenderAddress);
-
-    // Send a message. It should not be received.
-    String msg2 = "Hello2";
-    sendMessage(sendingChannel, msg2, groupSocketAddress);
-    InetSocketAddress sourceAddress2 = (InetSocketAddress) receivingChannel.receive(receiveBuffer);
-    assertNull(sourceAddress2);
-
-    receivingChannel.close();
-    sendingChannel.close();
-  }
-
-  public void test_dropSourceSpecific_twice_IPv4() throws Exception {
-    for (NetworkInterface networkInterface : ipv4networkInterfaces) {
-      test_dropSourceSpecific_twice(
-          networkInterface,
-          GOOD_MULTICAST_IPv4 /* groupAddress */,
-          UNICAST_IPv4_1 /* sourceAddress */);
-    }
-  }
-
-  public void test_dropSourceSpecific_twice_IPv6() throws Exception {
-    for (NetworkInterface networkInterface : ipv6networkInterfaces) {
-      test_dropSourceSpecific_twice(
-          networkInterface,
-          GOOD_MULTICAST_IPv6 /* groupAddress */,
-          UNICAST_IPv6_1 /* sourceAddress */);
-    }
-  }
-
-  private void test_dropSourceSpecific_twice(
-      NetworkInterface networkInterface, InetAddress groupAddress, InetAddress sourceAddress)
-      throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey = dc.join(groupAddress, networkInterface, sourceAddress);
-
-    assertTrue(membershipKey.isValid());
-    membershipKey.drop();
-    assertFalse(membershipKey.isValid());
-
-    // Try to leave a group we are no longer a member of. It should do nothing.
-    membershipKey.drop();
-
-    dc.close();
-  }
-
-  public void test_dropSourceSpecific_sourceKeysAreIndependent_IPv4() throws Exception {
-    for (NetworkInterface networkInterface : ipv4networkInterfaces) {
-      test_dropSourceSpecific_sourceKeysAreIndependent(
-          networkInterface,
-          GOOD_MULTICAST_IPv4 /* groupAddress */,
-          UNICAST_IPv4_1 /* sourceAddress1 */,
-          UNICAST_IPv4_2 /* sourceAddress2 */);
-    }
-  }
-
-  public void test_dropSourceSpecific_sourceKeysAreIndependent_IPv6() throws Exception {
-    for (NetworkInterface networkInterface : ipv6networkInterfaces) {
-      test_dropSourceSpecific_sourceKeysAreIndependent(
-          networkInterface,
-          GOOD_MULTICAST_IPv6 /* groupAddress */,
-          UNICAST_IPv6_1 /* sourceAddress1 */,
-          UNICAST_IPv6_2 /* sourceAddress2 */);
-    }
-  }
-
-  private void test_dropSourceSpecific_sourceKeysAreIndependent(
-      NetworkInterface networkInterface, InetAddress groupAddress, InetAddress sourceAddress1,
-      InetAddress sourceAddress2)
-      throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey1 = dc.join(groupAddress, networkInterface, sourceAddress1);
-    MembershipKey membershipKey2 = dc.join(groupAddress, networkInterface, sourceAddress2);
-    assertFalse(membershipKey1.equals(membershipKey2));
-    assertTrue(membershipKey1.isValid());
-    assertTrue(membershipKey2.isValid());
-
-    membershipKey1.drop();
-
-    assertFalse(membershipKey1.isValid());
-    assertTrue(membershipKey2.isValid());
-
-    dc.close();
-  }
-
-  public void test_drop_keyBehaviorAfterDrop() throws Exception {
-    DatagramChannel dc = createReceiverChannel();
-    MembershipKey membershipKey =
-        dc.join(GOOD_MULTICAST_IPv4, ipv4networkInterface, UNICAST_IPv4_1);
-    membershipKey.drop();
-    assertFalse(membershipKey.isValid());
-
-    try {
-      membershipKey.block(UNICAST_IPv4_1);
-    } catch (IllegalStateException expected) {
-    }
-
-    try {
-      membershipKey.unblock(UNICAST_IPv4_1);
-    } catch (IllegalStateException expected) {
-    }
-
-    assertSame(dc, membershipKey.channel());
-    assertSame(GOOD_MULTICAST_IPv4, membershipKey.group());
-    assertSame(UNICAST_IPv4_1, membershipKey.sourceAddress());
-    assertSame(ipv4networkInterface, membershipKey.networkInterface());
-  }
-
-  private static DatagramChannel createReceiverChannel() throws Exception {
-    DatagramChannel dc = DatagramChannel.open();
-    configureChannelForReceiving(dc);
-    dc.bind(null /* leave the OS to determine the port, and use the wildcard address */);
-    return dc;
-  }
-
-  private static void configureChannelForReceiving(DatagramChannel receivingChannel)
-      throws Exception {
-
-    // NOTE: At the time of writing setSoTimeout() has no effect in the RI, making these tests hang
-    // if the channel is in blocking mode.
-    receivingChannel.socket().setSoTimeout(200);
-    receivingChannel.configureBlocking(true);
-    // configureBlocking(false) can be used instead in the RI and we rely on the network to the
-    // local host being instantaneous.
-    // receivingChannel.configureBlocking(false);
-  }
-
-  private static boolean willWorkForMulticast(NetworkInterface iface) throws IOException {
-    return iface.isUp()
-        // Typically loopback interfaces do not support multicast, but they are ruled out
-        // explicitly here anyway.
-        && !iface.isLoopback() && iface.supportsMulticast()
-        && iface.getInetAddresses().hasMoreElements();
-  }
-
-  private static void sendMessage(
-      InetAddress targetGroup, int targetPort, String msg, NetworkInterface sendingInterface)
-      throws IOException {
-    // Any datagram socket can send to a group. It does not need to have joined the group.
-    DatagramChannel dc = DatagramChannel.open();
-    dc.setOption(StandardSocketOptions.IP_MULTICAST_IF, sendingInterface);
-    sendMessage(dc, msg, new InetSocketAddress(targetGroup, targetPort));
-    dc.close();
-  }
-
-  private static void sendMessage(
-      DatagramChannel sendingChannel, String msg, InetSocketAddress targetAddress)
-      throws IOException {
-
-    ByteBuffer sendBuffer = ByteBuffer.wrap(msg.getBytes());
-    sendingChannel.send(sendBuffer, targetAddress);
-  }
-
-  private static InetAddress getLocalIpv4Address(NetworkInterface networkInterface) {
-    for (InterfaceAddress interfaceAddress : networkInterface.getInterfaceAddresses()) {
-      if (interfaceAddress.getAddress() instanceof Inet4Address) {
-        return interfaceAddress.getAddress();
-      }
-    }
-    throw new AssertionFailedError("Unable to find local IPv4 address for " + networkInterface);
-  }
-
-  private static InetAddress getLocalIpv6Address(NetworkInterface networkInterface) {
-    for (InterfaceAddress interfaceAddress : networkInterface.getInterfaceAddresses()) {
-      if (interfaceAddress.getAddress() instanceof Inet6Address) {
-        return interfaceAddress.getAddress();
-      }
-    }
-    throw new AssertionFailedError("Unable to find local IPv6 address for " + networkInterface);
-  }
-
-}
diff --git a/luni/src/test/java/libcore/java/nio/channels/DatagramChannelTest.java b/luni/src/test/java/libcore/java/nio/channels/DatagramChannelTest.java
index cd4bb22..efcfece 100644
--- a/luni/src/test/java/libcore/java/nio/channels/DatagramChannelTest.java
+++ b/luni/src/test/java/libcore/java/nio/channels/DatagramChannelTest.java
@@ -23,9 +23,6 @@
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.net.SocketOption;
-import java.net.StandardSocketOptions;
 import java.nio.ByteBuffer;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.DatagramChannel;
@@ -61,7 +58,7 @@
         DatagramChannel dc = DatagramChannel.open();
         try {
             dc.configureBlocking(false);
-            dc.bind(null);
+            dc.socket().bind(null);
             // Should return immediately, since we're non-blocking.
             assertNull(dc.receive(ByteBuffer.allocate(2048)));
         } finally {
@@ -72,8 +69,6 @@
     public void testInitialState() throws Exception {
         DatagramChannel dc = DatagramChannel.open();
         try {
-            assertNull(dc.getLocalAddress());
-
             DatagramSocket socket = dc.socket();
             assertFalse(socket.isBound());
             assertFalse(socket.getBroadcast());
@@ -93,408 +88,20 @@
         }
     }
 
-    public void test_supportedOptions() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        Set<SocketOption<?>> options = dc.supportedOptions();
-
-        // Probe some values. This is not intended to be complete.
-        assertTrue(options.contains(StandardSocketOptions.SO_REUSEADDR));
-        assertFalse(options.contains(StandardSocketOptions.TCP_NODELAY));
-    }
-
-    public void test_getOption_unsupportedOption() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        try {
-            dc.getOption(StandardSocketOptions.TCP_NODELAY);
-            fail();
-        } catch (UnsupportedOperationException expected) {}
-
-        dc.close();
-    }
-
-    public void test_getOption_afterClose() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        dc.close();
-
-        try {
-            dc.getOption(StandardSocketOptions.SO_RCVBUF);
-            fail();
-        } catch (ClosedChannelException expected) {}
-    }
-
-    public void test_setOption_afterClose() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        dc.close();
-
-        try {
-            dc.setOption(StandardSocketOptions.SO_RCVBUF, 1234);
-            fail();
-        } catch (ClosedChannelException expected) {}
-    }
-
-    public void test_getOption_SO_RCVBUF_defaults() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        int value = dc.getOption(StandardSocketOptions.SO_RCVBUF);
-        assertTrue(value > 0);
-        assertEquals(value, dc.socket().getReceiveBufferSize());
-
-        dc.close();
-    }
-
-    public void test_setOption_SO_RCVBUF_afterOpen() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        trySetReceiveBufferSizeOption(dc);
-
-        dc.close();
-    }
-
-    private static void trySetReceiveBufferSizeOption(DatagramChannel dc) throws IOException {
-        int initialValue = dc.getOption(StandardSocketOptions.SO_RCVBUF);
-        try {
-            dc.setOption(StandardSocketOptions.SO_RCVBUF, -1);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-        int actualValue = dc.getOption(StandardSocketOptions.SO_RCVBUF);
-        assertEquals(initialValue, actualValue);
-        assertEquals(initialValue, dc.socket().getReceiveBufferSize());
-
-        int newBufferSize = initialValue - 1;
-        dc.setOption(StandardSocketOptions.SO_RCVBUF, newBufferSize);
-        actualValue = dc.getOption(StandardSocketOptions.SO_RCVBUF);
-        // The Linux Kernel actually doubles the value it is given and may choose to ignore it.
-        // This assertion may be brittle.
-        assertTrue(actualValue != initialValue);
-        assertEquals(actualValue, dc.socket().getReceiveBufferSize());
-    }
-
-    public void test_getOption_SO_SNDBUF_defaults() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        int value = dc.getOption(StandardSocketOptions.SO_SNDBUF);
-        assertTrue(value > 0);
-        assertEquals(value, dc.socket().getSendBufferSize());
-
-        dc.close();
-    }
-
-    public void test_setOption_SO_SNDBUF_afterOpen() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        trySetSendBufferSizeOption(dc);
-
-        dc.close();
-    }
-
-    private static void trySetSendBufferSizeOption(DatagramChannel dc) throws IOException {
-        int initialValue = dc.getOption(StandardSocketOptions.SO_SNDBUF);
-        try {
-            dc.setOption(StandardSocketOptions.SO_SNDBUF, -1);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-        int actualValue = dc.getOption(StandardSocketOptions.SO_SNDBUF);
-        assertEquals(initialValue, actualValue);
-        assertEquals(initialValue, dc.socket().getSendBufferSize());
-
-        int newBufferSize = initialValue - 1;
-        dc.setOption(StandardSocketOptions.SO_SNDBUF, newBufferSize);
-        actualValue = dc.getOption(StandardSocketOptions.SO_SNDBUF);
-        // The Linux Kernel actually doubles the value it is given and may choose to ignore it.
-        // This assertion may be brittle.
-        assertTrue(actualValue != initialValue);
-        assertEquals(actualValue, dc.socket().getSendBufferSize());
-    }
-
-    public void test_getOption_IP_MULTICAST_IF_defaults() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        NetworkInterface networkInterface = dc.getOption(StandardSocketOptions.IP_MULTICAST_IF);
-        assertNull(networkInterface);
-
-        dc.close();
-    }
-
-    public void test_getOption_IP_MULTICAST_IF_nullCheck() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        try {
-            dc.setOption(StandardSocketOptions.IP_MULTICAST_IF, null);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-
-        dc.close();
-    }
-
-    public void test_setOption_IP_MULTICAST_IF_afterOpen() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
-        assertTrue(networkInterfaces.hasMoreElements());
-        while (networkInterfaces.hasMoreElements()) {
-            trySetNetworkInterfaceOption(dc, networkInterfaces.nextElement());
-        }
-
-        dc.close();
-    }
-
-    public void test_setOption_IP_MULTICAST_IF_afterBind() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        dc.bind(new InetSocketAddress(Inet4Address.getLoopbackAddress(), 0));
-
-        Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
-        assertTrue(networkInterfaces.hasMoreElements());
-        while (networkInterfaces.hasMoreElements()) {
-            trySetNetworkInterfaceOption(dc, networkInterfaces.nextElement());
-        }
-
-        dc.close();
-    }
-
-    private static void trySetNetworkInterfaceOption(
-            DatagramChannel dc, NetworkInterface networkInterface) throws IOException {
-
-        NetworkInterface initialValue = dc.getOption(StandardSocketOptions.IP_MULTICAST_IF);
-        try {
-            dc.setOption(StandardSocketOptions.IP_MULTICAST_IF, null);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-        assertEquals(initialValue, dc.getOption(StandardSocketOptions.IP_MULTICAST_IF));
-
-        dc.setOption(StandardSocketOptions.IP_MULTICAST_IF, networkInterface);
-        NetworkInterface actualValue =
-                dc.getOption(StandardSocketOptions.IP_MULTICAST_IF);
-        assertEquals(networkInterface, actualValue);
-    }
-
-    public void test_getOption_IP_MULTICAST_LOOP_defaults() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        assertTrue(dc.getOption(StandardSocketOptions.IP_MULTICAST_LOOP));
-
-        dc.close();
-    }
-
-    public void test_getOption_IP_MULTICAST_LOOP_nullCheck() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        try {
-            dc.setOption(StandardSocketOptions.IP_MULTICAST_LOOP, null);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-
-        dc.close();
-    }
-
-    public void test_setOption_IP_MULTICAST_LOOP_afterOpen() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        assertTrue(dc.getOption(StandardSocketOptions.IP_MULTICAST_LOOP));
-
-        dc.setOption(StandardSocketOptions.IP_MULTICAST_LOOP, false);
-        assertFalse(dc.getOption(StandardSocketOptions.IP_MULTICAST_LOOP));
-
-        dc.close();
-    }
-
-    public void test_setOption_IP_MULTICAST_LOOP_afterBind() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        dc.bind(new InetSocketAddress(Inet4Address.getLoopbackAddress(), 0));
-
-        assertTrue(dc.getOption(StandardSocketOptions.IP_MULTICAST_LOOP));
-
-        dc.setOption(StandardSocketOptions.IP_MULTICAST_LOOP, false);
-        assertFalse(dc.getOption(StandardSocketOptions.IP_MULTICAST_LOOP));
-
-        dc.close();
-    }
-
-    public void test_getOption_IP_MULTICAST_TTL_defaults() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        int value = dc.getOption(StandardSocketOptions.IP_MULTICAST_TTL);
-        assertEquals(1, value);
-
-        dc.close();
-    }
-
-    public void test_setOption_IP_MULTICAST_TTL_afterOpen() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        trySetMulticastTtlOption(dc);
-
-        dc.close();
-    }
-
-    private static void trySetMulticastTtlOption(DatagramChannel dc) throws IOException {
-        int initialValue = dc.getOption(StandardSocketOptions.IP_MULTICAST_TTL);
-        try {
-            dc.setOption(StandardSocketOptions.IP_MULTICAST_TTL, -1);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-        int actualValue = dc.getOption(StandardSocketOptions.IP_MULTICAST_TTL);
-        assertEquals(initialValue, actualValue);
-
-        int newTtl = initialValue + 1;
-        dc.setOption(StandardSocketOptions.IP_MULTICAST_TTL, newTtl);
-        actualValue = dc.getOption(StandardSocketOptions.IP_MULTICAST_TTL);
-        assertEquals(newTtl, actualValue);
-    }
-
-    public void test_setOption_IP_MULTICAST_TTL_afterBind() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        dc.bind(null);
-
-        trySetMulticastTtlOption(dc);
-
-        dc.close();
-    }
-
-    public void test_getOption_SO_BROADCAST_defaults() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        assertFalse(dc.getOption(StandardSocketOptions.SO_BROADCAST));
-
-        dc.close();
-    }
-
-    public void test_setOption_SO_BROADCAST_afterOpen() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        trySetSoBroadcastOption(dc);
-
-        dc.close();
-    }
-
-    private static void trySetSoBroadcastOption(DatagramChannel dc) throws IOException {
-        boolean initialValue = dc.getOption(StandardSocketOptions.SO_BROADCAST);
-
-        dc.setOption(StandardSocketOptions.SO_BROADCAST, !initialValue);
-        boolean actualValue = dc.getOption(StandardSocketOptions.SO_BROADCAST);
-        assertEquals(!initialValue, actualValue);
-    }
-
-    public void test_setOption_SO_BROADCAST_afterBind() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        dc.bind(null);
-
-        trySetSoBroadcastOption(dc);
-
-        dc.close();
-    }
-
-    public void test_getOption_IP_TOS_defaults() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        int value = dc.getOption(StandardSocketOptions.IP_TOS);
-        assertEquals(0, value);
-        assertEquals(value, dc.socket().getTrafficClass());
-
-        dc.close();
-    }
-
-    public void test_setOption_IP_TOS_afterOpen() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        trySetTosOption(dc);
-
-        dc.close();
-    }
-
-    private static void trySetTosOption(DatagramChannel dc) throws IOException {
-        int initialValue = dc.getOption(StandardSocketOptions.IP_TOS);
-        try {
-            dc.setOption(StandardSocketOptions.IP_TOS, -1);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-        assertEquals(initialValue, (int) dc.getOption(StandardSocketOptions.IP_TOS));
-        assertEquals(initialValue, dc.socket().getTrafficClass());
-
-        try {
-            dc.setOption(StandardSocketOptions.IP_TOS, 256);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-        assertEquals(initialValue, (int) dc.getOption(StandardSocketOptions.IP_TOS));
-        assertEquals(initialValue, dc.socket().getTrafficClass());
-
-        int newValue = (initialValue + 1) % 255;
-        dc.setOption(StandardSocketOptions.IP_TOS, newValue);
-        assertEquals(newValue, (int) dc.getOption(StandardSocketOptions.IP_TOS));
-        assertEquals(newValue, dc.socket().getTrafficClass());
-    }
-
-    public void test_setOption_IP_TOS_afterBind() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-        dc.bind(null);
-
-        trySetTosOption(dc);
-
-        dc.close();
-    }
-
-    public void test_getOption_SO_REUSEADDR_defaults() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        boolean value = dc.getOption(StandardSocketOptions.SO_REUSEADDR);
-        assertFalse(value);
-        assertFalse(dc.socket().getReuseAddress());
-
-        dc.close();
-    }
-
-    public void test_setOption_SO_REUSEADDR_afterOpen() throws Exception {
-        DatagramChannel dc = DatagramChannel.open();
-
-        boolean initialValue = dc.getOption(StandardSocketOptions.SO_REUSEADDR);
-        dc.setOption(StandardSocketOptions.SO_REUSEADDR, !initialValue);
-        assertEquals(!initialValue, (boolean) dc.getOption(StandardSocketOptions.SO_REUSEADDR));
-        assertEquals(!initialValue, dc.socket().getReuseAddress());
-
-        dc.close();
-    }
-
     public void test_bind_unresolvedAddress() throws IOException {
         DatagramChannel dc = DatagramChannel.open();
         try {
-            dc.bind(new InetSocketAddress("unresolvedname", 31415));
+            dc.socket().bind(new InetSocketAddress("unresolvedname", 31415));
             fail();
-        } catch (UnresolvedAddressException expected) {
+        } catch (IOException expected) {
         }
 
-        assertNull(dc.getLocalAddress());
         assertTrue(dc.isOpen());
         assertFalse(dc.isConnected());
 
         dc.close();
     }
 
-    public void test_bind_noReuseAddress() throws Exception {
-        DatagramChannel dc1 = DatagramChannel.open();
-        dc1.setOption(StandardSocketOptions.SO_REUSEADDR, false);
-        DatagramChannel dc2 = DatagramChannel.open();
-        dc1.setOption(StandardSocketOptions.SO_REUSEADDR, false);
-
-        dc1.bind(null);
-
-        try {
-            dc2.bind(dc1.getLocalAddress());
-            fail();
-        } catch (IOException expected) {}
-
-        dc1.close();
-        dc2.close();
-    }
-
-    public void test_bind_withReuseAddress() throws Exception {
-        DatagramChannel dc1 = DatagramChannel.open();
-        dc1.setOption(StandardSocketOptions.SO_REUSEADDR, true);
-        DatagramChannel dc2 = DatagramChannel.open();
-        dc2.setOption(StandardSocketOptions.SO_REUSEADDR, true);
-
-        dc1.bind(null);
-        dc2.bind(dc1.getLocalAddress());
-
-        dc1.close();
-        dc2.close();
-    }
-
     public void test_bind_any_IPv4() throws Exception {
         test_bind_any(InetAddress.getByName("0.0.0.0"));
     }
@@ -505,12 +112,12 @@
 
     private void test_bind_any(InetAddress bindAddress) throws Exception {
         DatagramChannel dc = DatagramChannel.open();
-        dc.bind(new InetSocketAddress(bindAddress, 0));
+        dc.socket().bind(new InetSocketAddress(bindAddress, 0));
 
         assertTrue(dc.isOpen());
         assertFalse(dc.isConnected());
 
-        InetSocketAddress actualAddress = (InetSocketAddress) dc.getLocalAddress();
+        InetSocketAddress actualAddress = (InetSocketAddress) dc.socket().getLocalSocketAddress();
         assertTrue(actualAddress.getAddress().isAnyLocalAddress());
         assertTrue(actualAddress.getPort() > 0);
 
@@ -537,18 +144,16 @@
 
     private void test_bind(InetAddress bindAddress) throws IOException {
         DatagramChannel dc = DatagramChannel.open();
-        dc.bind(new InetSocketAddress(bindAddress, 0));
+        dc.socket().bind(new InetSocketAddress(bindAddress, 0));
 
-        InetSocketAddress actualAddress = (InetSocketAddress) dc.getLocalAddress();
+        InetSocketAddress actualAddress = (InetSocketAddress) dc.socket().getLocalSocketAddress();
         assertEquals(bindAddress, actualAddress.getAddress());
         assertTrue(actualAddress.getPort() > 0);
 
         dc.close();
     }
 
-    private static InetAddress getNonLoopbackNetworkInterfaceAddress(boolean ipv4)
-            throws SocketException {
-
+    private static InetAddress getNonLoopbackNetworkInterfaceAddress(boolean ipv4) throws IOException {
         Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
         while (networkInterfaces.hasMoreElements()) {
             NetworkInterface networkInterface = networkInterfaces.nextElement();
diff --git a/luni/src/test/java/libcore/java/nio/channels/ServerSocketChannelTest.java b/luni/src/test/java/libcore/java/nio/channels/ServerSocketChannelTest.java
index e819d82..1178b70 100644
--- a/luni/src/test/java/libcore/java/nio/channels/ServerSocketChannelTest.java
+++ b/luni/src/test/java/libcore/java/nio/channels/ServerSocketChannelTest.java
@@ -21,8 +21,7 @@
 import java.net.InetSocketAddress;
 import java.net.NetworkInterface;
 import java.net.ServerSocket;
-import java.net.SocketOption;
-import java.net.StandardSocketOptions;
+import java.net.SocketException;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.ServerSocketChannel;
 import java.nio.channels.SocketChannel;
@@ -36,7 +35,7 @@
         ServerSocketChannel ssc = ServerSocketChannel.open();
         try {
             ssc.configureBlocking(false);
-            ssc.bind(null);
+            ssc.socket().bind(null);
             // Should return immediately, since we're non-blocking.
             assertNull(ssc.accept());
         } finally {
@@ -48,7 +47,7 @@
     public void test_open_initialState() throws Exception {
         ServerSocketChannel ssc = ServerSocketChannel.open();
         try {
-            assertNull(ssc.getLocalAddress());
+            assertNull(ssc.socket().getLocalSocketAddress());
 
             ServerSocket socket = ssc.socket();
             assertFalse(socket.isBound());
@@ -67,12 +66,12 @@
     public void test_bind_unresolvedAddress() throws IOException {
         ServerSocketChannel ssc = ServerSocketChannel.open();
         try {
-            ssc.bind(new InetSocketAddress("unresolvedname", 31415));
+            ssc.socket().bind(new InetSocketAddress("unresolvedname", 31415));
             fail();
-        } catch (UnresolvedAddressException expected) {
+        } catch (SocketException expected) {
         }
 
-        assertNull(ssc.getLocalAddress());
+        assertNull(ssc.socket().getLocalSocketAddress());
         assertTrue(ssc.isOpen());
 
         ssc.close();
@@ -80,8 +79,8 @@
 
     public void test_bind_nullBindsToAll() throws Exception {
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(null);
-        InetSocketAddress boundAddress = (InetSocketAddress) ssc.getLocalAddress();
+        ssc.socket().bind(null);
+        InetSocketAddress boundAddress = (InetSocketAddress) ssc.socket().getLocalSocketAddress();
         assertTrue(boundAddress.getAddress().isAnyLocalAddress());
         assertFalse(boundAddress.getAddress().isLinkLocalAddress());
         assertFalse(boundAddress.getAddress().isLoopbackAddress());
@@ -106,8 +105,8 @@
 
     public void test_bind_loopback() throws Exception {
         ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0));
-        InetSocketAddress boundAddress = (InetSocketAddress) ssc.getLocalAddress();
+        ssc.socket().bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0));
+        InetSocketAddress boundAddress = (InetSocketAddress) ssc.socket().getLocalSocketAddress();
         assertFalse(boundAddress.getAddress().isAnyLocalAddress());
         assertFalse(boundAddress.getAddress().isLinkLocalAddress());
         assertTrue(boundAddress.getAddress().isLoopbackAddress());
@@ -146,102 +145,4 @@
             return false;
         }
     }
-
-    public void test_supportedOptions() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-        Set<SocketOption<?>> options = ssc.supportedOptions();
-
-        // Probe some values. This is not intended to be complete.
-        assertTrue(options.contains(StandardSocketOptions.SO_REUSEADDR));
-        assertFalse(options.contains(StandardSocketOptions.IP_MULTICAST_TTL));
-    }
-
-    public void test_getOption_unsupportedOption() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-        try {
-            ssc.getOption(StandardSocketOptions.IP_MULTICAST_TTL);
-            fail();
-        } catch (UnsupportedOperationException expected) {}
-
-        ssc.close();
-    }
-
-    public void test_getOption_afterClose() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.close();
-
-        try {
-            ssc.getOption(StandardSocketOptions.SO_RCVBUF);
-            fail();
-        } catch (ClosedChannelException expected) {}
-    }
-
-    public void test_setOption_afterClose() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-        ssc.close();
-
-        try {
-            ssc.setOption(StandardSocketOptions.SO_RCVBUF, 1234);
-            fail();
-        } catch (ClosedChannelException expected) {}
-    }
-
-    public void test_getOption_SO_RCVBUF_defaults() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-
-        int value = ssc.getOption(StandardSocketOptions.SO_RCVBUF);
-        assertTrue(value > 0);
-        assertEquals(value, ssc.socket().getReceiveBufferSize());
-
-        ssc.close();
-    }
-
-    public void test_setOption_SO_RCVBUF_afterOpen() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-
-        trySetReceiveBufferSizeOption(ssc);
-
-        ssc.close();
-    }
-
-    private static void trySetReceiveBufferSizeOption(ServerSocketChannel ssc) throws IOException {
-        int initialValue = ssc.getOption(StandardSocketOptions.SO_RCVBUF);
-        try {
-            ssc.setOption(StandardSocketOptions.SO_RCVBUF, -1);
-            fail();
-        } catch (IllegalArgumentException expected) {}
-        int actualValue = ssc.getOption(StandardSocketOptions.SO_RCVBUF);
-        assertEquals(initialValue, actualValue);
-        assertEquals(initialValue, ssc.socket().getReceiveBufferSize());
-
-        int newBufferSize = initialValue - 1;
-        ssc.setOption(StandardSocketOptions.SO_RCVBUF, newBufferSize);
-        actualValue = ssc.getOption(StandardSocketOptions.SO_RCVBUF);
-        // The Linux Kernel actually doubles the value it is given and may choose to ignore it.
-        // This assertion may be brittle.
-        assertTrue(actualValue != initialValue);
-        assertEquals(actualValue, ssc.socket().getReceiveBufferSize());
-    }
-
-    public void test_getOption_SO_REUSEADDR_defaults() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-
-        boolean value = ssc.getOption(StandardSocketOptions.SO_REUSEADDR);
-        assertTrue(value);
-        assertTrue(ssc.socket().getReuseAddress());
-
-        ssc.close();
-    }
-
-    public void test_setOption_SO_REUSEADDR_afterOpen() throws Exception {
-        ServerSocketChannel ssc = ServerSocketChannel.open();
-
-        boolean initialValue = ssc.getOption(StandardSocketOptions.SO_REUSEADDR);
-        ssc.setOption(StandardSocketOptions.SO_REUSEADDR, !initialValue);
-        assertEquals(!initialValue, (boolean) ssc.getOption(StandardSocketOptions.SO_REUSEADDR));
-        assertEquals(!initialValue, ssc.socket().getReuseAddress());
-
-        ssc.close();
-    }
-
 }
diff --git a/luni/src/test/java/libcore/java/nio/channels/SocketChannelTest.java b/luni/src/test/java/libcore/java/nio/channels/SocketChannelTest.java
index 6bba862..a54b30a 100644
--- a/luni/src/test/java/libcore/java/nio/channels/SocketChannelTest.java
+++ b/luni/src/test/java/libcore/java/nio/channels/SocketChannelTest.java
@@ -24,8 +24,6 @@
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
-import java.net.SocketOption;
-import java.net.StandardSocketOptions;
 import java.nio.ByteBuffer;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.SocketChannel;
@@ -143,7 +141,7 @@
   public void test_open_initialState() throws Exception {
     SocketChannel sc = SocketChannel.open();
     try {
-      assertNull(sc.getLocalAddress());
+      assertNull(sc.socket().getLocalSocketAddress());
 
       Socket socket = sc.socket();
       assertFalse(socket.isBound());
@@ -166,12 +164,12 @@
   public void test_bind_unresolvedAddress() throws IOException {
     SocketChannel sc = SocketChannel.open();
     try {
-      sc.bind(new InetSocketAddress("unresolvedname", 31415));
+      sc.socket().bind(new InetSocketAddress("unresolvedname", 31415));
       fail();
-    } catch (UnresolvedAddressException expected) {
+    } catch (IOException expected) {
     }
 
-    assertNull(sc.getLocalAddress());
+    assertNull(sc.socket().getLocalSocketAddress());
     assertTrue(sc.isOpen());
     assertFalse(sc.isConnected());
 
@@ -181,16 +179,16 @@
   /** Checks that the SocketChannel and associated Socket agree on the socket state. */
   public void test_bind_socketStateSync() throws IOException {
     SocketChannel sc = SocketChannel.open();
-    assertNull(sc.getLocalAddress());
+    assertNull(sc.socket().getLocalSocketAddress());
 
     Socket socket = sc.socket();
     assertNull(socket.getLocalSocketAddress());
     assertFalse(socket.isBound());
 
     InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-    sc.bind(bindAddr);
+    sc.socket().bind(bindAddr);
 
-    InetSocketAddress actualAddr = (InetSocketAddress) sc.getLocalAddress();
+    InetSocketAddress actualAddr = (InetSocketAddress) sc.socket().getLocalSocketAddress();
     assertEquals(actualAddr, socket.getLocalSocketAddress());
     assertEquals(bindAddr.getHostName(), actualAddr.getHostName());
     assertTrue(socket.isBound());
@@ -209,14 +207,14 @@
    */
   public void test_bind_socketObjectCreationAfterBind() throws IOException {
     SocketChannel sc = SocketChannel.open();
-    assertNull(sc.getLocalAddress());
+    assertNull(sc.socket().getLocalSocketAddress());
 
     InetSocketAddress bindAddr = new InetSocketAddress("localhost", 0);
-    sc.bind(bindAddr);
+    sc.socket().bind(bindAddr);
 
     // Socket object creation after bind().
     Socket socket = sc.socket();
-    InetSocketAddress actualAddr = (InetSocketAddress) sc.getLocalAddress();
+    InetSocketAddress actualAddr = (InetSocketAddress) sc.socket().getLocalSocketAddress();
     assertEquals(actualAddr, socket.getLocalSocketAddress());
     assertEquals(bindAddr.getHostName(), actualAddr.getHostName());
     assertTrue(socket.isBound());
@@ -276,307 +274,4 @@
     ss.close();
     sc.close();
   }
-
-  public void test_supportedOptions() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-    Set<SocketOption<?>> options = sc.supportedOptions();
-
-    // Probe some values. This is not intended to be complete.
-    assertTrue(options.contains(StandardSocketOptions.SO_REUSEADDR));
-    assertFalse(options.contains(StandardSocketOptions.IP_MULTICAST_TTL));
-  }
-
-  public void test_getOption_unsupportedOption() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-    try {
-      sc.getOption(StandardSocketOptions.IP_MULTICAST_TTL);
-      fail();
-    } catch (UnsupportedOperationException expected) {
-    }
-
-    sc.close();
-  }
-
-  public void test_getOption_afterClose() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-    sc.close();
-
-    try {
-      sc.getOption(StandardSocketOptions.SO_RCVBUF);
-      fail();
-    } catch (ClosedChannelException expected) {
-    }
-  }
-
-  public void test_setOption_afterClose() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-    sc.close();
-
-    try {
-      sc.setOption(StandardSocketOptions.SO_RCVBUF, 1234);
-      fail();
-    } catch (ClosedChannelException expected) {
-    }
-  }
-
-  public void test_getOption_SO_RCVBUF_defaults() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    int value = sc.getOption(StandardSocketOptions.SO_RCVBUF);
-    assertTrue(value > 0);
-    assertEquals(value, sc.socket().getReceiveBufferSize());
-
-    sc.close();
-  }
-
-  public void test_setOption_SO_RCVBUF_afterOpen() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    trySetReceiveBufferSizeOption(sc);
-
-    sc.close();
-  }
-
-  private static void trySetReceiveBufferSizeOption(SocketChannel sc) throws IOException {
-    int initialValue = sc.getOption(StandardSocketOptions.SO_RCVBUF);
-    try {
-      sc.setOption(StandardSocketOptions.SO_RCVBUF, -1);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    int actualValue = sc.getOption(StandardSocketOptions.SO_RCVBUF);
-    assertEquals(initialValue, actualValue);
-    assertEquals(initialValue, sc.socket().getReceiveBufferSize());
-
-    int newBufferSize = initialValue - 1;
-    sc.setOption(StandardSocketOptions.SO_RCVBUF, newBufferSize);
-    actualValue = sc.getOption(StandardSocketOptions.SO_RCVBUF);
-    // The Linux Kernel actually doubles the value it is given and may choose to ignore it.
-    // This assertion may be brittle.
-    assertTrue(actualValue != initialValue);
-    assertEquals(actualValue, sc.socket().getReceiveBufferSize());
-  }
-
-  public void test_getOption_SO_SNDBUF_defaults() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    int bufferSize = sc.getOption(StandardSocketOptions.SO_SNDBUF);
-    assertTrue(bufferSize > 0);
-    assertEquals(bufferSize, sc.socket().getSendBufferSize());
-
-    sc.close();
-  }
-
-  public void test_setOption_SO_SNDBUF_afterOpen() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    trySetSendBufferSizeOption(sc);
-
-    sc.close();
-  }
-
-  private static void trySetSendBufferSizeOption(SocketChannel sc) throws IOException {
-    int initialValue = sc.getOption(StandardSocketOptions.SO_SNDBUF);
-    try {
-      sc.setOption(StandardSocketOptions.SO_SNDBUF, -1);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    int actualValue = sc.getOption(StandardSocketOptions.SO_SNDBUF);
-    assertEquals(initialValue, actualValue);
-    assertEquals(initialValue, sc.socket().getSendBufferSize());
-
-    int newValue = initialValue - 1;
-    sc.setOption(StandardSocketOptions.SO_SNDBUF, newValue);
-    actualValue = sc.getOption(StandardSocketOptions.SO_SNDBUF);
-    // The Linux Kernel actually doubles the value it is given and may choose to ignore it.
-    // This assertion may be brittle.
-    assertTrue(actualValue != initialValue);
-    assertEquals(actualValue, sc.socket().getSendBufferSize());
-  }
-
-  public void test_getOption_SO_KEEPALIVE_defaults() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    assertFalse(sc.getOption(StandardSocketOptions.SO_KEEPALIVE));
-
-    sc.close();
-  }
-
-  public void test_setOption_SO_KEEPALIVE_afterOpen() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    trySetSoKeepaliveOption(sc);
-
-    sc.close();
-  }
-
-  private static void trySetSoKeepaliveOption(SocketChannel sc) throws IOException {
-    boolean initialValue = sc.getOption(StandardSocketOptions.SO_KEEPALIVE);
-
-    sc.setOption(StandardSocketOptions.SO_KEEPALIVE, !initialValue);
-    boolean actualValue = sc.getOption(StandardSocketOptions.SO_KEEPALIVE);
-    assertEquals(!initialValue, actualValue);
-  }
-
-  public void test_setOption_SO_KEEPALIVE_afterBind() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-    sc.bind(null);
-
-    trySetSoKeepaliveOption(sc);
-
-    sc.close();
-  }
-
-  public void test_getOption_IP_TOS_defaults() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    int value = sc.getOption(StandardSocketOptions.IP_TOS);
-    assertEquals(0, value);
-    assertEquals(value, sc.socket().getTrafficClass());
-
-    sc.close();
-  }
-
-  public void test_setOption_IP_TOS_afterOpen() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    trySetTosOption(sc);
-
-    sc.close();
-  }
-
-  private static void trySetTosOption(SocketChannel sc) throws IOException {
-    int initialValue = sc.getOption(StandardSocketOptions.IP_TOS);
-    try {
-      sc.setOption(StandardSocketOptions.IP_TOS, -1);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    assertEquals(initialValue, (int) sc.getOption(StandardSocketOptions.IP_TOS));
-    assertEquals(initialValue, sc.socket().getTrafficClass());
-
-    try {
-      sc.setOption(StandardSocketOptions.IP_TOS, 256);
-      fail();
-    } catch (IllegalArgumentException expected) {
-    }
-    assertEquals(initialValue, (int) sc.getOption(StandardSocketOptions.IP_TOS));
-    assertEquals(initialValue, sc.socket().getTrafficClass());
-
-    int newValue = (initialValue + 1) % 255;
-    sc.setOption(StandardSocketOptions.IP_TOS, newValue);
-    assertEquals(newValue, (int) sc.getOption(StandardSocketOptions.IP_TOS));
-    assertEquals(newValue, sc.socket().getTrafficClass());
-  }
-
-  public void test_setOption_IP_TOS_afterBind() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-    sc.bind(null);
-
-    trySetTosOption(sc);
-
-    sc.close();
-  }
-
-  public void test_getOption_SO_LINGER_defaults() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    int value = sc.getOption(StandardSocketOptions.SO_LINGER);
-    assertTrue(value < 0);
-    assertEquals(value, sc.socket().getSoLinger());
-
-    sc.close();
-  }
-
-  public void test_setOption_SO_LINGER_afterOpen() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    trySetLingerOption(sc);
-
-    sc.close();
-  }
-
-  private static void trySetLingerOption(SocketChannel sc) throws IOException {
-    int initialValue = sc.getOption(StandardSocketOptions.SO_LINGER);
-    // Any negative value disables the setting, -1 is used to report SO_LINGER being disabled.
-    sc.setOption(StandardSocketOptions.SO_LINGER, -2);
-    int soLingerDisabled = -1;
-    assertEquals(soLingerDisabled, (int) sc.getOption(StandardSocketOptions.SO_LINGER));
-    assertEquals(soLingerDisabled, sc.socket().getSoLinger());
-
-    sc.setOption(StandardSocketOptions.SO_LINGER, 65536);
-    assertEquals(65535, (int) sc.getOption(StandardSocketOptions.SO_LINGER));
-    assertEquals(65535, sc.socket().getSoLinger());
-
-    int newValue = (initialValue + 1) % 65535;
-    sc.setOption(StandardSocketOptions.SO_LINGER, newValue);
-    assertEquals(newValue, (int) sc.getOption(StandardSocketOptions.SO_LINGER));
-    assertEquals(newValue, sc.socket().getSoLinger());
-  }
-
-  public void test_setOption_SO_LINGER_afterBind() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-    sc.bind(null);
-
-    trySetLingerOption(sc);
-
-    sc.close();
-  }
-
-  public void test_getOption_SO_REUSEADDR_defaults() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    boolean value = sc.getOption(StandardSocketOptions.SO_REUSEADDR);
-    assertFalse(value);
-    assertFalse(sc.socket().getReuseAddress());
-
-    sc.close();
-  }
-
-  public void test_setOption_SO_REUSEADDR_afterOpen() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    boolean initialValue = sc.getOption(StandardSocketOptions.SO_REUSEADDR);
-    sc.setOption(StandardSocketOptions.SO_REUSEADDR, !initialValue);
-    assertEquals(!initialValue, (boolean) sc.getOption(StandardSocketOptions.SO_REUSEADDR));
-    assertEquals(!initialValue, sc.socket().getReuseAddress());
-
-    sc.close();
-  }
-
-  public void test_getOption_TCP_NODELAY_defaults() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    boolean value = sc.getOption(StandardSocketOptions.TCP_NODELAY);
-    assertFalse(value);
-    assertFalse(sc.socket().getTcpNoDelay());
-
-    sc.close();
-  }
-
-  public void test_setOption_TCP_NODELAY_afterOpen() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-
-    trySetNoDelay(sc);
-
-    sc.close();
-  }
-
-  private static void trySetNoDelay(SocketChannel sc) throws IOException {
-    boolean initialValue = sc.getOption(StandardSocketOptions.TCP_NODELAY);
-    sc.setOption(StandardSocketOptions.TCP_NODELAY, !initialValue);
-    assertEquals(!initialValue, (boolean) sc.getOption(StandardSocketOptions.TCP_NODELAY));
-    assertEquals(!initialValue, sc.socket().getTcpNoDelay());
-  }
-
-  public void test_setOption_TCP_NODELAY_afterBind() throws Exception {
-    SocketChannel sc = SocketChannel.open();
-    sc.bind(null);
-
-    trySetNoDelay(sc);
-
-    sc.close();
-  }
-
 }
diff --git a/luni/src/test/java/libcore/java/security/KeyPairGeneratorTest.java b/luni/src/test/java/libcore/java/security/KeyPairGeneratorTest.java
index 09a18e2..e7fdb1f 100644
--- a/luni/src/test/java/libcore/java/security/KeyPairGeneratorTest.java
+++ b/luni/src/test/java/libcore/java/security/KeyPairGeneratorTest.java
@@ -47,6 +47,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.crypto.interfaces.DHPrivateKey;
+import javax.crypto.interfaces.DHPublicKey;
 import javax.crypto.spec.DHParameterSpec;
 
 import junit.framework.TestCase;
@@ -126,12 +128,8 @@
 
             AlgorithmParameterSpec params = null;
 
-            // TODO: detect if we're running in vogar and run the full test
             if ("DH".equals(algorithm)) {
-                // Disabled because this takes too long on devices.
-                // TODO: Re-enable DH test. http://b/5513723.
-                // params = getDHParams();
-                continue;
+                params = getDHParams();
             }
 
             try {
@@ -218,6 +216,14 @@
         test_KeyPair(kpg, kpg.generateKeyPair());
 
         String algorithm = kpg.getAlgorithm();
+
+        // TODO: detect if we're running in vogar and run the full test
+        if ("DH".equals(algorithm)) {
+            // Disabled because this takes too long on devices.
+            // TODO: Re-enable DH test. http://b/5513723.
+            return;
+        }
+
         List<Integer> keySizes = getKeySizes(algorithm);
         for (int keySize : keySizes) {
             kpg.initialize(keySize);
@@ -263,6 +269,17 @@
             expectedAlgorithm = "DH";
         }
         assertEquals(expectedAlgorithm, k.getAlgorithm().toUpperCase());
+        if (expectedAlgorithm.equals("DH")) {
+            if (k instanceof DHPublicKey) {
+                DHPublicKey dhPub = (DHPublicKey) k;
+                assertEquals(dhPub.getParams().getP(), getDHParams().getP());
+            } else if (k instanceof DHPrivateKey) {
+                DHPrivateKey dhPriv = (DHPrivateKey) k;
+                assertEquals(dhPriv.getParams().getP(), getDHParams().getP());
+            } else {
+                fail("not a public or private key!?");
+            }
+        }
         assertNotNull(k.getEncoded());
         assertNotNull(k.getFormat());
 
@@ -344,7 +361,7 @@
      *
      * openssl gendh 512 | openssl dhparams -C
      */
-    private static AlgorithmParameterSpec getDHParams() {
+    private static DHParameterSpec getDHParams() {
         BigInteger p = new BigInteger("E7AB1768BD75CD24700960FFA32D3F1557344E587101237532CC641646ED7A7C104743377F6D46251698B665CE2A6CBAB6714C2569A7D2CA22C0CF03FA40AC93", 16);
         BigInteger g = new BigInteger("02", 16);
         return new DHParameterSpec(p, g, 512);
diff --git a/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java b/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
index 9ab6f70..057cd17 100644
--- a/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
+++ b/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
@@ -46,8 +46,8 @@
     }
 
     public void testSerialization() throws Exception {
-        // Set the default locale. The default locale determines what strings are used by the
-        // DateFormatSymbols after deserialization.
+        // Set the default locale. The default locale used to determine what strings were used by
+        // the DateFormatSymbols after deserialization. See http://b/16502916
         Locale.setDefault(Locale.US);
 
         // The Polish language needs stand-alone month and weekday names.
@@ -64,17 +64,16 @@
         DateFormatSymbols deserializedDfs = (DateFormatSymbols) in.readObject();
         assertEquals(-1, in.read());
 
-        // The two objects should claim to be equal, even though they aren't really.
+        // The two objects be equal.
         assertEquals(originalDfs, deserializedDfs);
 
         // The original differentiates between regular month names and stand-alone month names...
         assertEquals("stycznia", formatDate(pl, "MMMM", originalDfs));
         assertEquals("stycze\u0144", formatDate(pl, "LLLL", originalDfs));
 
-        // But the deserialized object is screwed because the RI's serialized form doesn't
-        // contain the locale or the necessary strings. Don't serialize DateFormatSymbols, folks!
+        // And so does the deserialized version.
         assertEquals("stycznia", formatDate(pl, "MMMM", deserializedDfs));
-        assertEquals("January", formatDate(pl, "LLLL", deserializedDfs));
+        assertEquals("stycze\u0144", formatDate(pl, "LLLL", deserializedDfs));
     }
 
     private String formatDate(Locale l, String fmt, DateFormatSymbols dfs) {
diff --git a/luni/src/test/java/libcore/java/text/DecimalFormatTest.java b/luni/src/test/java/libcore/java/text/DecimalFormatTest.java
index 722924d..0eae20a 100644
--- a/luni/src/test/java/libcore/java/text/DecimalFormatTest.java
+++ b/luni/src/test/java/libcore/java/text/DecimalFormatTest.java
@@ -124,21 +124,21 @@
         df.setMaximumFractionDigits(2);
         df.setMultiplier(2);
         assertEquals(df.format(BigDecimal.valueOf(0.16)),
-        df.format(BigDecimal.valueOf(0.16).doubleValue()));
+                df.format(BigDecimal.valueOf(0.16).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(0.0293)),
-        df.format(BigDecimal.valueOf(0.0293).doubleValue()));
+                df.format(BigDecimal.valueOf(0.0293).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(0.006)),
-        df.format(BigDecimal.valueOf(0.006).doubleValue()));
+                df.format(BigDecimal.valueOf(0.006).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(0.00283)),
-        df.format(BigDecimal.valueOf(0.00283).doubleValue()));
+                df.format(BigDecimal.valueOf(0.00283).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(1.60)),
         df.format(BigDecimal.valueOf(1.60).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(15)),
-        df.format(BigDecimal.valueOf(15).doubleValue()));
+                df.format(BigDecimal.valueOf(15).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(170)),
-        df.format(BigDecimal.valueOf(170).doubleValue()));
+                df.format(BigDecimal.valueOf(170).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(234.56)),
-        df.format(BigDecimal.valueOf(234.56).doubleValue()));
+                df.format(BigDecimal.valueOf(234.56).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(0)),
         df.format(BigDecimal.valueOf(0).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(-1)),
@@ -146,11 +146,11 @@
         assertEquals(df.format(BigDecimal.valueOf(-10000)),
         df.format(BigDecimal.valueOf(-10000).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(-0.001)),
-        df.format(BigDecimal.valueOf(-0.001).doubleValue()));
+                df.format(BigDecimal.valueOf(-0.001).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(1234567890.1234567)),
-        df.format(BigDecimal.valueOf(1234567890.1234567).doubleValue()));
+                df.format(BigDecimal.valueOf(1234567890.1234567).doubleValue()));
         assertEquals(df.format(BigDecimal.valueOf(1.234567E100)),
-        df.format(BigDecimal.valueOf(1.234567E100).doubleValue()));
+                df.format(BigDecimal.valueOf(1.234567E100).doubleValue()));
     }
 
     private void assertBigDecimalWithFraction(BigDecimal bd, String expectedResult, int fraction) {
@@ -282,4 +282,40 @@
 
         assertEquals(expected, numberFormat.format(2.01));
     }
+
+    // Confirm the currency symbol used by a format is determined by the locale of the format
+    // not the current default Locale.
+    public void testSetCurrency_symbolOrigin() {
+        Currency currency = Currency.getInstance("CNY");
+        Locale locale1 = Locale.CHINA;
+        Locale locale2 = Locale.US;
+        String locale1Symbol = currency.getSymbol(locale1);
+        String locale2Symbol = currency.getSymbol(locale2);
+        // This test only works if we can tell where the symbol came from, which requires they are
+        // different across the two locales chosen.
+        assertFalse(locale1Symbol.equals(locale2Symbol));
+
+        Locale originalLocale = Locale.getDefault();
+        try {
+            Locale.setDefault(locale1);
+            String amountDefaultLocale1 =
+                    formatArbitraryCurrencyAmountInLocale(currency, locale2);
+
+            Locale.setDefault(locale2);
+            String amountDefaultLocale2 =
+                    formatArbitraryCurrencyAmountInLocale(currency, locale2);
+
+            // This used to fail because Currency.getSymbol() was used without providing the
+            // format's locale.
+            assertEquals(amountDefaultLocale1, amountDefaultLocale2);
+        } finally {
+            Locale.setDefault(originalLocale);
+        }
+    }
+
+    private String formatArbitraryCurrencyAmountInLocale(Currency currency, Locale locale) {
+        NumberFormat localeCurrencyFormat = NumberFormat.getCurrencyInstance(locale);
+        localeCurrencyFormat.setCurrency(currency);
+        return localeCurrencyFormat.format(1000);
+    }
 }
diff --git a/luni/src/test/java/libcore/java/util/CurrencyTest.java b/luni/src/test/java/libcore/java/util/CurrencyTest.java
index fb7fbf6..61a22fd 100644
--- a/luni/src/test/java/libcore/java/util/CurrencyTest.java
+++ b/luni/src/test/java/libcore/java/util/CurrencyTest.java
@@ -67,13 +67,6 @@
         assertEquals(-1, Currency.getInstance("XXX").getDefaultFractionDigits());
     }
 
-    public void test_getNumericCode() throws Exception {
-        assertEquals(840, Currency.getInstance("USD").getNumericCode());
-        assertEquals(826, Currency.getInstance("GBP").getNumericCode());
-        assertEquals(999, Currency.getInstance("XXX").getNumericCode());
-        assertEquals(0, Currency.getInstance("XFU").getNumericCode());
-    }
-
     // http://code.google.com/p/android/issues/detail?id=38622
     public void test_getSymbol_38622() throws Exception {
         // The CLDR data had the Portuguese symbol for "EUR" in pt, not in pt_PT.
diff --git a/luni/src/test/java/libcore/java/util/LocaleTest.java b/luni/src/test/java/libcore/java/util/LocaleTest.java
index f3b31bb..23a4f28 100644
--- a/luni/src/test/java/libcore/java/util/LocaleTest.java
+++ b/luni/src/test/java/libcore/java/util/LocaleTest.java
@@ -107,22 +107,38 @@
         assertEquals("Taiwan", new Locale("", "TW").getDisplayCountry(Locale.US));
     }
 
-    public void test_tl() throws Exception {
+    public void test_tl_and_fil() throws Exception {
         // In jb-mr1, we had a last-minute hack to always return "Filipino" because
-        // icu4c 4.8 didn't have any localizations for fil. (http://b/7291355)
+        // icu4c 4.8 didn't have any localizations for fil. (http://b/7291355).
+        //
+        // After the icu4c 4.9 upgrade, we could localize "fil" correctly, though we
+        // needed another hack to supply "fil" instead of "tl" to icu4c. (http://b/8023288).
+        //
+        // These hacks have now been reverted, so "tl" really does represent
+        // tagalog and not filipino.
         Locale tl = new Locale("tl");
         Locale tl_PH = new Locale("tl", "PH");
-        assertEquals("Filipino", tl.getDisplayLanguage(Locale.ENGLISH));
-        assertEquals("Filipino", tl_PH.getDisplayLanguage(Locale.ENGLISH));
-        assertEquals("Filipino", tl.getDisplayLanguage(tl));
-        assertEquals("Filipino", tl_PH.getDisplayLanguage(tl_PH));
+        assertEquals("Tagalog", tl.getDisplayLanguage(Locale.ENGLISH));
+        assertEquals("Tagalog", tl_PH.getDisplayLanguage(Locale.ENGLISH));
+        assertEquals("tl", tl.getDisplayLanguage(tl));
+        assertEquals("tl", tl_PH.getDisplayLanguage(tl_PH));
 
-        // After the icu4c 4.9 upgrade, we could localize "fil" correctly, though we
-        // needed another hack to supply "fil" instead of "tl" to icu4c. (http://b/8023288)
         Locale es_MX = new Locale("es", "MX");
-        assertEquals("filipino", tl.getDisplayLanguage(es_MX));
-        assertEquals("filipino", tl_PH.getDisplayLanguage(es_MX));
-      }
+        assertEquals("tagalo", tl.getDisplayLanguage(es_MX));
+        assertEquals("tagalo", tl_PH.getDisplayLanguage(es_MX));
+
+        // Assert that we can deal with "fil" correctly, since we've switched
+        // to using "fil" for Filipino, and not "tl". (http://b/15873165).
+        Locale fil = new Locale("fil");
+        Locale fil_PH = new Locale("fil", "PH");
+        assertEquals("Filipino", fil.getDisplayLanguage(Locale.ENGLISH));
+        assertEquals("Filipino", fil_PH.getDisplayLanguage(Locale.ENGLISH));
+        assertEquals("Filipino", fil.getDisplayLanguage(fil));
+        assertEquals("Filipino", fil_PH.getDisplayLanguage(fil_PH));
+
+        assertEquals("filipino", fil.getDisplayLanguage(es_MX));
+        assertEquals("filipino", fil_PH.getDisplayLanguage(es_MX));
+    }
 
     // http://b/3452611; Locale.getDisplayLanguage fails for the obsolete language codes.
     public void test_getDisplayName_obsolete() throws Exception {
@@ -525,13 +541,6 @@
         assertEquals("eng", l.getLanguage());
         assertEquals("419", l.getCountry());
 
-        // IND is an invalid region code so ICU helpfully tries to parse it as
-        // a 3 letter language code, even if it isn't a valid ISO-639-3 code
-        // either.
-        l =  fromLanguageTag("en-USB", useBuilder);
-        assertEquals("usb", l.getLanguage());
-        assertEquals("", l.getCountry());
-
         // Script tags shouldn't be mis-recognized as regions.
         l =  fromLanguageTag("en-Latn", useBuilder);
         assertEquals("en", l.getLanguage());
@@ -596,16 +605,24 @@
         } catch (IllformedLocaleException expected) {
         }
 
-        // Ill-formed extension with long subtag.
+        // Two extension keys in a row (i.e, another case of an ill-formed
+        // empty exception).
         try {
-            fromLanguageTag("en-f-fooobaaaz", true);
+            fromLanguageTag("en-f-g-fo-baar", true);
             fail();
         } catch (IllformedLocaleException expected) {
         }
 
-        // Ill-formed extension key.
+        // Dangling empty key after a well formed extension.
         try {
-            fromLanguageTag("en-9-baa", true);
+            fromLanguageTag("en-f-fo-baar-g", true);
+            fail();
+        } catch (IllformedLocaleException expected) {
+        }
+
+        // Ill-formed extension with long subtag.
+        try {
+            fromLanguageTag("en-f-fooobaaaz", true);
             fail();
         } catch (IllformedLocaleException expected) {
         }
@@ -684,7 +701,7 @@
         assertEquals("en", l.getLanguage());
         assertEquals("Latn", l.getScript());
         assertEquals("GB", l.getCountry());
-        assertEquals("FOOOO_POSIX", l.getVariant());
+        assertEquals("FOOOO", l.getVariant());
         assertEquals("fo-bar-baaz", l.getExtension('g'));
 
         // Multiple extensions
@@ -692,7 +709,7 @@
         assertEquals("en", l.getLanguage());
         assertEquals("Latn", l.getScript());
         assertEquals("US", l.getCountry());
-        assertEquals("FOOOO_POSIX", l.getVariant());
+        assertEquals("FOOOO", l.getVariant());
         assertEquals("fo-bar", l.getExtension('g'));
         assertEquals("go-gaz", l.getExtension('h'));
 
@@ -722,6 +739,13 @@
         assertEquals("", l.getScript());
         assertEquals("", l.getCountry());
         assertEquals("fo", l.getExtension('f'));
+
+        l = fromLanguageTag("en-f-fo-x-a-b-c-d-e-fo", useBuilder);
+        assertEquals("en", l.getLanguage());
+        assertEquals("", l.getScript());
+        assertEquals("", l.getCountry());
+        assertEquals("fo", l.getExtension('f'));
+        assertEquals("a-b-c-d-e-fo", l.getExtension('x'));
     }
 
     public void test_forLanguageTag() {
@@ -766,7 +790,7 @@
 
     public void test_setLanguageTag_malformedTags() {
         Locale l = fromLanguageTag("a", false);
-        assertEquals("", l.getLanguage());
+        assertEquals("und", l.getLanguage());
         assertEquals("", l.getCountry());
         assertEquals("", l.getVariant());
         assertEquals("", l.getScript());
@@ -1097,4 +1121,22 @@
                 .build();
         assertEquals("en-US-POSIX", posix.toLanguageTag());
     }
+
+    public void test_forLanguageTag_grandFatheredLocale() {
+        // Regular grandfathered locale.
+        Locale gaulish = Locale.forLanguageTag("cel-gaulish");
+        assertEquals("xtg", gaulish.getLanguage());
+        assertEquals("cel-gaulish", gaulish.getExtension(Locale.PRIVATE_USE_EXTENSION));
+        assertEquals("", gaulish.getCountry());
+        assertEquals("", gaulish.getScript());
+        assertEquals("", gaulish.getVariant());
+
+        // Irregular grandfathered locale.
+        Locale enochian = Locale.forLanguageTag("i-enochian");
+        assertEquals("und", enochian.getLanguage());
+        assertEquals("i-enochian", enochian.getExtension(Locale.PRIVATE_USE_EXTENSION));
+        assertEquals("", enochian.getCountry());
+        assertEquals("", enochian.getScript());
+        assertEquals("", enochian.getVariant());
+    }
 }
diff --git a/luni/src/test/java/libcore/java/util/OldAndroidLocaleTest.java b/luni/src/test/java/libcore/java/util/OldAndroidLocaleTest.java
index fa761d3..87f2f9d 100644
--- a/luni/src/test/java/libcore/java/util/OldAndroidLocaleTest.java
+++ b/luni/src/test/java/libcore/java/util/OldAndroidLocaleTest.java
@@ -76,9 +76,16 @@
 
     // This one makes sure we have all necessary locales installed.
     public void testICULocales() {
-        String[] locales = new String[] {
-                // List of locales currently required for Android.
-                "en_US", "es_US", "en_GB", "fr_FR", "de_DE", "de_AT", "cs_CZ", "nl_NL" };
+        // List of locales currently required for Android.
+        Locale[] locales = new Locale[] {
+                new Locale("en", "US"),
+                new Locale("es", "US"),
+                new Locale("en", "GB"),
+                new Locale("fr", "FR"),
+                new Locale("de", "DE"),
+                new Locale("de", "AT"),
+                new Locale("cs", "CZ"),
+                new Locale("nl", "NL") };
 
         String[] mondays = new String[] {
                 "Monday", "lunes", "Monday", "lundi", "Montag", "Montag", "pond\u011bl\u00ed", "maandag" };
@@ -87,14 +94,12 @@
                 "USD", "USD", "GBP", "EUR", "EUR", "EUR", "CZK", "EUR"};
 
         for (int i = 0; i < locales.length; i++) {
-            Locale l = new Locale(locales[i].substring(0, 2), locales[i].substring(3));
+            final Locale l = locales[i];
 
-            // Check language part of locale.
             DateFormatSymbols d = new DateFormatSymbols(l);
             assertEquals("Monday name for " + locales[i] + " must match",
                     mondays[i], d.getWeekdays()[2]);
 
-            // Check country part of locale.
             Currency c = Currency.getInstance(l);
             assertEquals("Currency code for " + locales[i] + " must match",
                     currencies[i], c.getCurrencyCode());
diff --git a/luni/src/test/java/libcore/java/util/zip/ZipFileTest.java b/luni/src/test/java/libcore/java/util/zip/ZipFileTest.java
index 81ff673..a9ff56f 100644
--- a/luni/src/test/java/libcore/java/util/zip/ZipFileTest.java
+++ b/luni/src/test/java/libcore/java/util/zip/ZipFileTest.java
@@ -217,96 +217,6 @@
         }
     }
 
-    public void testNullCharset() throws IOException {
-        try {
-            new ZipFile(createTemporaryZipFile(), null);
-            fail();
-        } catch (NullPointerException expected) {
-        }
-    }
-
-    // Tests that non-UTF8 encoded zip files can be interpreted. Relies on ZipOutputStream.
-    public void testNonUtf8Encoding() throws IOException {
-        Charset charset = Charset.forName("Cp437");
-        String encodingDependentString = "\u00FB";
-        assertEncodingDiffers(encodingDependentString, charset, StandardCharsets.US_ASCII,
-                StandardCharsets.UTF_8);
-        String name = "name" + encodingDependentString;
-        String comment = "comment" + encodingDependentString;
-
-        File result = createTemporaryZipFile();
-        OutputStream os = new BufferedOutputStream(new FileOutputStream(result));
-        ZipOutputStream out = new ZipOutputStream(os, charset);
-        out.setComment(comment);
-        ZipEntry writeEntry = new ZipEntry(name);
-        writeEntry.setComment(comment);
-        out.putNextEntry(writeEntry);
-        out.write("FileContentsIrrelevant".getBytes());
-        out.closeEntry();
-        out.close();
-
-        ZipFile zipFile = new ZipFile(result, StandardCharsets.US_ASCII);
-        assertNull(zipFile.getEntry(name));
-        assertFalse(zipFile.getComment().equals(comment));
-        zipFile.close();
-
-        zipFile = new ZipFile(result, charset);
-        ZipEntry readEntry = zipFile.getEntry(name);
-        assertNotNull(readEntry);
-        assertEquals(name, readEntry.getName());
-        assertEquals(comment, readEntry.getComment());
-        assertEquals(comment, zipFile.getComment());
-        zipFile.close();
-    }
-
-    // Tests that UTF8 encoded zip files can be interpreted when the constructor is provided with a
-    // non-UTF-8 encoding. Relies on ZipOutputStream.
-    public void testUtf8EncodingOverridesConstructor() throws IOException {
-        Charset charset = Charset.forName("Cp437");
-        String encodingDependentString = "\u00FB";
-        assertEncodingDiffers(encodingDependentString, charset, StandardCharsets.UTF_8);
-        String name = "name" + encodingDependentString;
-        String comment = "comment" + encodingDependentString;
-
-        File result = createTemporaryZipFile();
-        OutputStream os = new BufferedOutputStream(new FileOutputStream(result));
-        ZipOutputStream out = new ZipOutputStream(os, StandardCharsets.UTF_8);
-        // The file comment does not get meta-data about the character encoding.
-        out.setComment(comment);
-        // The entry will be tagged as being UTF-8 encoded.
-        ZipEntry writeEntry = new ZipEntry(name);
-        writeEntry.setComment(comment);
-        out.putNextEntry(writeEntry);
-        out.write("FileContentsIrrelevant".getBytes());
-        out.closeEntry();
-        out.close();
-
-        ZipFile zipFile = new ZipFile(result, charset);
-        // The entry should be found, because it should be tagged as being UTF-8 encoded.
-        ZipEntry readEntry = zipFile.getEntry(name);
-        assertNotNull(readEntry);
-        assertEquals(name, readEntry.getName());
-        assertEquals(comment, readEntry.getComment());
-        // We expect the comment to be mangled because it is not tagged.
-        assertFalse(zipFile.getComment().equals(comment));
-        zipFile.close();
-    }
-
-    /**
-     * Asserts the byte encoding for the string is different for all the supplied character
-     * sets.
-     */
-    private void assertEncodingDiffers(String string, Charset... charsets) {
-        Set<List<Byte>> encodings = new HashSet<List<Byte>>();
-        for (int i = 0; i < charsets.length; i++) {
-            List<Byte> byteList = new ArrayList<Byte>();
-            for (byte b : string.getBytes(charsets[i])) {
-                byteList.add(b);
-            }
-            assertTrue("Encoding has been seen before", encodings.add(byteList));
-        }
-    }
-
     /**
      * Compresses the given number of files, each of the given size, into a .zip archive.
      */
diff --git a/luni/src/test/java/libcore/java/util/zip/ZipInputStreamTest.java b/luni/src/test/java/libcore/java/util/zip/ZipInputStreamTest.java
index 2daa127..49990a3 100644
--- a/luni/src/test/java/libcore/java/util/zip/ZipInputStreamTest.java
+++ b/luni/src/test/java/libcore/java/util/zip/ZipInputStreamTest.java
@@ -50,97 +50,6 @@
         assertTrue(Arrays.equals(data, unzip("r", ZipOutputStreamTest.zip("r", data))));
     }
 
-    public void testNullCharset() throws IOException {
-        try {
-            new ZipInputStream(new ByteArrayInputStream(new byte[1]), null);
-            fail();
-        } catch (NullPointerException expected) {
-        }
-    }
-
-    // Tests that non-UTF8 encoded zip file entries can be interpreted. Relies on ZipOutputStream.
-    public void testNonUtf8Encoding() throws IOException {
-        Charset charset = Charset.forName("Cp437");
-        String encodingDependentString = "\u00FB";
-        assertEncodingDiffers(encodingDependentString, charset, StandardCharsets.US_ASCII,
-                StandardCharsets.UTF_8);
-        String name = "name" + encodingDependentString;
-        String comment = "comment" + encodingDependentString;
-
-        ByteArrayOutputStream bytesOutputStream = new ByteArrayOutputStream();
-        ZipOutputStream out = new ZipOutputStream(bytesOutputStream, charset);
-        ZipEntry writeEntry = new ZipEntry(name);
-        writeEntry.setComment(comment);
-        out.putNextEntry(writeEntry);
-        out.write("FileContentsIrrelevant".getBytes());
-        out.closeEntry();
-        out.close();
-
-        ByteArrayInputStream bytesInputStream =
-                new ByteArrayInputStream(bytesOutputStream.toByteArray());
-        ZipInputStream in = new ZipInputStream(bytesInputStream, StandardCharsets.US_ASCII);
-        ZipEntry readEntry = in.getNextEntry();
-        // Due to the way ZipInputStream works it never returns entry comments.
-        assertNull("ZipInputStream must not retrieve comments", readEntry.getComment());
-        assertFalse(readEntry.getName().equals(name));
-        in.close();
-
-        bytesInputStream = new ByteArrayInputStream(bytesOutputStream.toByteArray());
-        in = new ZipInputStream(bytesInputStream, charset);
-        readEntry = in.getNextEntry();
-        // Because ZipInputStream never reads the central directory it never returns entry
-        // comments or the file comment.
-        assertNull("ZipInputStream must not retrieve comments", readEntry.getComment());
-        assertEquals(name, readEntry.getName());
-        in.close();
-    }
-
-    // Tests that UTF8 encoded zip file entries can be interpreted when the constructor is provided
-    // with a non-UTF-8 encoding. Relies on ZipOutputStream.
-    public void testUtf8EncodingOverridesConstructor() throws IOException {
-        Charset charset = Charset.forName("Cp437");
-        String encodingDependentString = "\u00FB";
-        assertEncodingDiffers(encodingDependentString, charset, StandardCharsets.UTF_8);
-        String name = "name" + encodingDependentString;
-        String comment = "comment" + encodingDependentString;
-
-        ByteArrayOutputStream bytesOutputStream = new ByteArrayOutputStream();
-        ZipOutputStream out = new ZipOutputStream(bytesOutputStream, StandardCharsets.UTF_8);
-        // The entry will be tagged as being UTF-8 encoded.
-        ZipEntry writeEntry = new ZipEntry(name);
-        writeEntry.setComment(comment);
-        out.putNextEntry(writeEntry);
-        out.write("FileContentsIrrelevant".getBytes());
-        out.closeEntry();
-        out.close();
-
-        ByteArrayInputStream bytesInputStream =
-                new ByteArrayInputStream(bytesOutputStream.toByteArray());
-        ZipInputStream in = new ZipInputStream(bytesInputStream, charset);
-        ZipEntry readEntry = in.getNextEntry();
-        // Because ZipInputStream never reads the central directory it never returns entry
-        // comments or the file comment.
-        assertNull("ZipInputStream must not retrieve comments", readEntry.getComment());
-        assertNotNull(readEntry);
-        assertEquals(name, readEntry.getName());
-        in.close();
-    }
-
-    /**
-     * Asserts the byte encoding for the string is different for all the supplied character
-     * sets.
-     */
-    private void assertEncodingDiffers(String string, Charset... charsets) {
-        Set<List<Byte>> encodings = new HashSet<List<Byte>>();
-        for (int i = 0; i < charsets.length; i++) {
-            List<Byte> byteList = new ArrayList<Byte>();
-            for (byte b : string.getBytes(charsets[i])) {
-                byteList.add(b);
-            }
-            assertTrue("Encoding has been seen before", encodings.add(byteList));
-        }
-    }
-
     public static byte[] unzip(String name, byte[] bytes) throws IOException {
         ZipInputStream in = new ZipInputStream(new ByteArrayInputStream(bytes));
         ByteArrayOutputStream out = new ByteArrayOutputStream();
diff --git a/luni/src/test/java/libcore/java/util/zip/ZipOutputStreamTest.java b/luni/src/test/java/libcore/java/util/zip/ZipOutputStreamTest.java
index 92afffa..e69f010 100644
--- a/luni/src/test/java/libcore/java/util/zip/ZipOutputStreamTest.java
+++ b/luni/src/test/java/libcore/java/util/zip/ZipOutputStreamTest.java
@@ -78,14 +78,6 @@
         }
     }
 
-    public void testNullCharset() throws IOException {
-        try {
-            new ZipOutputStream(new ByteArrayOutputStream(), null);
-            fail();
-        } catch (NullPointerException expected) {
-        }
-    }
-
     /** Regression test for null comment causing a NullPointerException during write. */
     public void testNullComment() throws IOException {
         ZipOutputStream out = new ZipOutputStream(new ByteArrayOutputStream());
@@ -95,54 +87,4 @@
         out.closeEntry();
         out.finish();
     }
-
-    /** Contrived test to force a longer name than can be stored. */
-    public void testLongName() throws IOException {
-        int maxNameBytes = 0xffff; // 2 bytes
-        String longName = createString(maxNameBytes);
-
-        ZipEntry entry = new ZipEntry(longName);
-
-        // Using UTF-16 will result in name bytes twice as large as is supported by Zip.
-        // UTF-16 is an unlikely character set to actually want to use with Zip but enables
-        // the edge-case behavior required without using direct field access.
-        ZipOutputStream out = new ZipOutputStream(
-                new ByteArrayOutputStream(), StandardCharsets.UTF_16);
-        try {
-            out.putNextEntry(entry);
-            fail();
-        } catch (IllegalArgumentException expected) {
-        }
-    }
-
-    /** Contrived test to force a longer comment than can be stored. */
-    public void testLongComment() throws IOException {
-        int maxCommentBytes = 0xffff; // 2 bytes
-        String longComment = createString(maxCommentBytes);
-
-        ZipEntry entry = new ZipEntry("name");
-        // setComment() should pass, because it is at the limit of what ZipEntry will detect as
-        // valid (since it uses UTF-8 as a worst-case guess).
-        entry.setComment(longComment);
-
-        // Using UTF-16 will result in comment bytes twice as large as is supported by Zip.
-        // UTF-16 is an unlikely character set to actually want to use with Zip but enables
-        // the edge-case behavior required without using direct field access.
-        ZipOutputStream out = new ZipOutputStream(
-                new ByteArrayOutputStream(), StandardCharsets.UTF_16);
-        try {
-            out.putNextEntry(entry);
-            fail();
-        } catch (IllegalArgumentException expected) {
-        }
-    }
-
-    private static String createString(int numChars) {
-        char c = 'a';
-        StringBuilder sb = new StringBuilder(numChars);
-        for (int i = 0; i < numChars; i++) {
-            sb.append(c);
-        }
-        return sb.toString();
-    }
 }
diff --git a/luni/src/test/java/libcore/javax/crypto/CipherTest.java b/luni/src/test/java/libcore/javax/crypto/CipherTest.java
index f7a0a72..c89886c 100644
--- a/luni/src/test/java/libcore/javax/crypto/CipherTest.java
+++ b/luni/src/test/java/libcore/javax/crypto/CipherTest.java
@@ -1213,11 +1213,19 @@
         if (!isOnlyWrappingAlgorithm(algorithm)) {
             c.init(Cipher.ENCRYPT_MODE, encryptKey, encryptSpec);
             byte[] cipherText = c.doFinal(getActualPlainText(algorithm));
+            byte[] cipherText2 = c.doFinal(getActualPlainText(algorithm));
+            assertEquals(cipherID,
+                         Arrays.toString(cipherText),
+                         Arrays.toString(cipherText2));
             c.init(Cipher.DECRYPT_MODE, getDecryptKey(algorithm), decryptSpec);
             byte[] decryptedPlainText = c.doFinal(cipherText);
             assertEquals(cipherID,
                          Arrays.toString(getExpectedPlainText(algorithm, providerName)),
                          Arrays.toString(decryptedPlainText));
+            byte[] decryptedPlainText2 = c.doFinal(cipherText);
+            assertEquals(cipherID,
+                         Arrays.toString(decryptedPlainText),
+                         Arrays.toString(decryptedPlainText2));
         }
     }
 
diff --git a/luni/src/test/java/libcore/javax/net/ssl/SSLContextTest.java b/luni/src/test/java/libcore/javax/net/ssl/SSLContextTest.java
index 0e13fb0..dccadbd 100644
--- a/luni/src/test/java/libcore/javax/net/ssl/SSLContextTest.java
+++ b/luni/src/test/java/libcore/javax/net/ssl/SSLContextTest.java
@@ -24,7 +24,12 @@
 import java.security.Provider;
 import java.security.Security;
 import java.security.UnrecoverableKeyException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import java.util.concurrent.Callable;
+import libcore.io.IoUtils;
 import libcore.java.security.StandardNames;
 import javax.net.ServerSocketFactory;
 import javax.net.SocketFactory;
@@ -34,12 +39,15 @@
 import javax.net.ssl.ManagerFactoryParameters;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLServerSocket;
 import javax.net.ssl.SSLServerSocketFactory;
 import javax.net.ssl.SSLSessionContext;
+import javax.net.ssl.SSLSocket;
 import javax.net.ssl.SSLSocketFactory;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.TrustManagerFactory;
 import javax.net.ssl.TrustManagerFactorySpi;
+import javax.net.ssl.X509KeyManager;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
@@ -85,6 +93,94 @@
         }
     }
 
+    public void test_SSLContext_pskOnlyConfiguration_defaultProviderOnly() throws Exception {
+        // Test the scenario where only a PSKKeyManager is provided and no TrustManagers are
+        // provided.
+        SSLContext sslContext = SSLContext.getInstance("TLS");
+        sslContext.init(
+                new KeyManager[] {
+                        PSKKeyManagerProxy.getConscryptPSKKeyManager(new PSKKeyManagerProxy())
+                },
+                new TrustManager[0],
+                null);
+        List<String> expectedCipherSuites =
+                new ArrayList<String>(StandardNames.CIPHER_SUITES_DEFAULT_PSK);
+        expectedCipherSuites.add(StandardNames.CIPHER_SUITE_SECURE_RENEGOTIATION);
+        assertEnabledCipherSuites(expectedCipherSuites, sslContext);
+    }
+
+    public void test_SSLContext_x509AndPskConfiguration_defaultProviderOnly() throws Exception {
+        // Test the scenario where an X509TrustManager and PSKKeyManager are provided.
+        SSLContext sslContext = SSLContext.getInstance("TLS");
+        sslContext.init(
+                new KeyManager[] {
+                        PSKKeyManagerProxy.getConscryptPSKKeyManager(new PSKKeyManagerProxy())
+                },
+                null, // Use default trust managers, one of which is an X.509 one.
+                null);
+        List<String> expectedCipherSuites =
+                new ArrayList<String>(StandardNames.CIPHER_SUITES_DEFAULT_PSK);
+        expectedCipherSuites.addAll(StandardNames.CIPHER_SUITES_DEFAULT);
+        assertEnabledCipherSuites(expectedCipherSuites, sslContext);
+
+        // Test the scenario where an X509KeyManager and PSKKeyManager are provided.
+        sslContext = SSLContext.getInstance("TLS");
+        // Just an arbitrary X509KeyManager -- it won't be invoked in this test.
+        X509KeyManager x509KeyManager = new RandomPrivateKeyX509ExtendedKeyManager(null);
+        sslContext.init(
+                new KeyManager[] {
+                        x509KeyManager,
+                        PSKKeyManagerProxy.getConscryptPSKKeyManager(new PSKKeyManagerProxy())
+                },
+                new TrustManager[0],
+                null);
+        assertEnabledCipherSuites(expectedCipherSuites, sslContext);
+    }
+
+    public void test_SSLContext_emptyConfiguration_defaultProviderOnly() throws Exception {
+        // Test the scenario where neither X.509 nor PSK KeyManagers or TrustManagers are provided.
+        SSLContext sslContext = SSLContext.getInstance("TLS");
+        sslContext.init(
+                new KeyManager[0],
+                new TrustManager[0],
+                null);
+        assertEnabledCipherSuites(
+                Arrays.asList(StandardNames.CIPHER_SUITE_SECURE_RENEGOTIATION),
+                sslContext);
+    }
+
+    private static void assertEnabledCipherSuites(
+            List<String> expectedCipherSuites, SSLContext sslContext) throws Exception {
+        assertContentsInOrder(
+                expectedCipherSuites, sslContext.createSSLEngine().getEnabledCipherSuites());
+        assertContentsInOrder(
+                expectedCipherSuites,
+                sslContext.createSSLEngine().getSSLParameters().getCipherSuites());
+        assertContentsInOrder(
+                expectedCipherSuites, sslContext.getSocketFactory().getDefaultCipherSuites());
+        assertContentsInOrder(
+                expectedCipherSuites, sslContext.getServerSocketFactory().getDefaultCipherSuites());
+
+        SSLSocket sslSocket = (SSLSocket) sslContext.getSocketFactory().createSocket();
+        try {
+            assertContentsInOrder(
+                    expectedCipherSuites, sslSocket.getEnabledCipherSuites());
+            assertContentsInOrder(
+                    expectedCipherSuites, sslSocket.getSSLParameters().getCipherSuites());
+        } finally {
+            IoUtils.closeQuietly(sslSocket);
+        }
+
+        SSLServerSocket sslServerSocket =
+                (SSLServerSocket) sslContext.getServerSocketFactory().createServerSocket();
+        try {
+            assertContentsInOrder(
+                    expectedCipherSuites, sslServerSocket.getEnabledCipherSuites());
+        } finally {
+            IoUtils.closeQuietly(sslSocket);
+        }
+    }
+
     public void test_SSLContext_getInstance() throws Exception {
         try {
             SSLContext.getInstance(null);
@@ -463,4 +559,16 @@
         assertTrue(testContext.port != 0);
         testContext.close();
     }
+
+    private static void assertContentsInOrder(List<String> expected, String... actual) {
+        if (expected.size() != actual.length) {
+            fail("Unexpected length. Expected len <" + expected.size()
+                    + ">, actual len <" + actual.length + ">, expected <" + expected
+                    + ">, actual <" + Arrays.asList(actual) + ">");
+        }
+        if (!expected.equals(Arrays.asList(actual))) {
+            fail("Unexpected element(s). Expected <" + expected
+                    + ">, actual <" + Arrays.asList(actual) + ">" );
+        }
+    }
 }
diff --git a/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java b/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java
index c32a178..8e29e71 100644
--- a/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java
+++ b/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java
@@ -282,6 +282,16 @@
         c.close();
     }
 
+    public void test_SSLEngine_setEnabledCipherSuites_storesCopy() throws Exception {
+        TestSSLContext c = TestSSLContext.create();
+        SSLEngine e = c.clientContext.createSSLEngine();
+        String[] array = new String[] {e.getEnabledCipherSuites()[0]};
+        String originalFirstElement = array[0];
+        e.setEnabledCipherSuites(array);
+        array[0] = "Modified after having been set";
+        assertEquals(originalFirstElement, e.getEnabledCipherSuites()[0]);
+    }
+
     public void test_SSLEngine_setEnabledCipherSuites() throws Exception {
         TestSSLContext c = TestSSLContext.create();
         SSLEngine e = c.clientContext.createSSLEngine();
@@ -328,6 +338,16 @@
         c.close();
     }
 
+    public void test_SSLEngine_setEnabledProtocols_storesCopy() throws Exception {
+        TestSSLContext c = TestSSLContext.create();
+        SSLEngine e = c.clientContext.createSSLEngine();
+        String[] array = new String[] {e.getEnabledProtocols()[0]};
+        String originalFirstElement = array[0];
+        e.setEnabledProtocols(array);
+        array[0] = "Modified after having been set";
+        assertEquals(originalFirstElement, e.getEnabledProtocols()[0]);
+    }
+
     public void test_SSLEngine_setEnabledProtocols() throws Exception {
         TestSSLContext c = TestSSLContext.create();
         SSLEngine e = c.clientContext.createSSLEngine();
@@ -573,20 +593,6 @@
         }
     }
 
-    public void test_SSLEngine_endpointVerification_Success() throws Exception {
-        TestSSLContext c = TestSSLContext.create();
-        TestSSLEnginePair p = TestSSLEnginePair.create(c, new TestSSLEnginePair.Hooks() {
-            @Override
-            void beforeBeginHandshake(SSLEngine client, SSLEngine server) {
-                SSLParameters p = client.getSSLParameters();
-                p.setEndpointIdentificationAlgorithm("HTTPS");
-                client.setSSLParameters(p);
-            }
-        });
-        assertConnected(p);
-        c.close();
-    }
-
     public void test_SSLEngine_getEnableSessionCreation() throws Exception {
         TestSSLContext c = TestSSLContext.create();
         SSLEngine e = c.clientContext.createSSLEngine();
diff --git a/luni/src/test/java/libcore/javax/net/ssl/SSLServerSocketTest.java b/luni/src/test/java/libcore/javax/net/ssl/SSLServerSocketTest.java
index 8c4dbdd..59c44c1 100644
--- a/luni/src/test/java/libcore/javax/net/ssl/SSLServerSocketTest.java
+++ b/luni/src/test/java/libcore/javax/net/ssl/SSLServerSocketTest.java
@@ -36,6 +36,16 @@
     assertEquals(Arrays.asList(cipherSuites), Arrays.asList(socket.getEnabledCipherSuites()));
   }
 
+  public void testSetEnabledCipherSuitesStoresCopy() throws Exception {
+      SSLServerSocket socket =
+              (SSLServerSocket) SSLServerSocketFactory.getDefault().createServerSocket();
+      String[] array = new String[] {socket.getEnabledCipherSuites()[0]};
+      String originalFirstElement = array[0];
+      socket.setEnabledCipherSuites(array);
+      array[0] = "Modified after having been set";
+      assertEquals(originalFirstElement, socket.getEnabledCipherSuites()[0]);
+  }
+
   public void testSetEnabledProtocolsAffectsGetter() throws Exception {
     SSLServerSocket socket =
         (SSLServerSocket) SSLServerSocketFactory.getDefault().createServerSocket();
@@ -43,4 +53,14 @@
     socket.setEnabledProtocols(protocols);
     assertEquals(Arrays.asList(protocols), Arrays.asList(socket.getEnabledProtocols()));
   }
+
+  public void testSetEnabledProtocolsStoresCopy() throws Exception {
+      SSLServerSocket socket =
+              (SSLServerSocket) SSLServerSocketFactory.getDefault().createServerSocket();
+      String[] array = new String[] {socket.getEnabledProtocols()[0]};
+      String originalFirstElement = array[0];
+      socket.setEnabledProtocols(array);
+      array[0] = "Modified after having been set";
+      assertEquals(originalFirstElement, socket.getEnabledProtocols()[0]);
+  }
 }
diff --git a/luni/src/test/java/libcore/javax/net/ssl/SSLSocketFactoryTest.java b/luni/src/test/java/libcore/javax/net/ssl/SSLSocketFactoryTest.java
index 86e96ff..acf69c0 100644
--- a/luni/src/test/java/libcore/javax/net/ssl/SSLSocketFactoryTest.java
+++ b/luni/src/test/java/libcore/javax/net/ssl/SSLSocketFactoryTest.java
@@ -16,24 +16,199 @@
 
 package libcore.javax.net.ssl;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketException;
+import java.security.KeyManagementException;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+import java.util.Properties;
 import javax.net.ServerSocketFactory;
 import javax.net.SocketFactory;
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLContextSpi;
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLServerSocketFactory;
+import javax.net.ssl.SSLSessionContext;
 import javax.net.ssl.SSLSocket;
 import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
 import junit.framework.TestCase;
+import libcore.java.security.StandardNames;
 
 public class SSLSocketFactoryTest extends TestCase {
+    private static final String SSL_PROPERTY = "ssl.SocketFactory.provider";
+
     public void test_SSLSocketFactory_getDefault() {
         SocketFactory sf = SSLSocketFactory.getDefault();
         assertNotNull(sf);
         assertTrue(SSLSocketFactory.class.isAssignableFrom(sf.getClass()));
     }
 
+    public static class FakeSSLSocketProvider extends Provider {
+        public FakeSSLSocketProvider() {
+            super("FakeSSLSocketProvider", 1.0, "Testing provider");
+            put("SSLContext.Default", FakeSSLContextSpi.class.getName());
+        }
+    }
+
+    public static final class FakeSSLContextSpi extends SSLContextSpi {
+        @Override
+        protected void engineInit(KeyManager[] keyManagers, TrustManager[] trustManagers,
+                SecureRandom secureRandom) throws KeyManagementException {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        protected SSLSocketFactory engineGetSocketFactory() {
+            return new FakeSSLSocketFactory();
+        }
+
+        @Override
+        protected SSLServerSocketFactory engineGetServerSocketFactory() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        protected SSLEngine engineCreateSSLEngine(String s, int i) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        protected SSLEngine engineCreateSSLEngine() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        protected SSLSessionContext engineGetServerSessionContext() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        protected SSLSessionContext engineGetClientSessionContext() {
+            throw new UnsupportedOperationException();
+        }
+    }
+
+    public static class FakeSSLSocketFactory extends SSLSocketFactory {
+        public FakeSSLSocketFactory() {
+        }
+
+        @Override
+        public String[] getDefaultCipherSuites() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public String[] getSupportedCipherSuites() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public Socket createSocket(Socket s, String host, int port, boolean autoClose) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public Socket createSocket(InetAddress address, int port, InetAddress localAddress,
+                int localPort) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public Socket createSocket(InetAddress host, int port) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public Socket createSocket(String host, int port, InetAddress localHost, int localPort) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public Socket createSocket(String host, int port) {
+            throw new UnsupportedOperationException();
+        }
+    }
+
+    public void test_SSLSocketFactory_getDefault_cacheInvalidate() throws Exception {
+        String origProvider = resetSslProvider();
+        try {
+            SocketFactory sf1 = SSLSocketFactory.getDefault();
+            assertNotNull(sf1);
+            assertTrue(SSLSocketFactory.class.isAssignableFrom(sf1.getClass()));
+
+            Provider fakeProvider = new FakeSSLSocketProvider();
+            SocketFactory sf4 = null;
+            SSLContext origContext = null;
+            try {
+                origContext = SSLContext.getDefault();
+                Security.insertProviderAt(fakeProvider, 1);
+                SSLContext.setDefault(SSLContext.getInstance("Default", fakeProvider));
+
+                sf4 = SSLSocketFactory.getDefault();
+                assertNotNull(sf4);
+                assertTrue(SSLSocketFactory.class.isAssignableFrom(sf4.getClass()));
+
+                assertFalse(sf1.getClass() + " should not be " + sf4.getClass(),
+                        sf1.getClass().equals(sf4.getClass()));
+            } finally {
+                SSLContext.setDefault(origContext);
+                Security.removeProvider(fakeProvider.getName());
+            }
+
+            SocketFactory sf3 = SSLSocketFactory.getDefault();
+            assertNotNull(sf3);
+            assertTrue(SSLSocketFactory.class.isAssignableFrom(sf3.getClass()));
+
+            assertTrue(sf1.getClass() + " should be " + sf3.getClass(),
+                    sf1.getClass().equals(sf3.getClass()));
+
+            if (!StandardNames.IS_RI) {
+                Security.setProperty(SSL_PROPERTY, FakeSSLSocketFactory.class.getName());
+                SocketFactory sf2 = SSLSocketFactory.getDefault();
+                assertNotNull(sf2);
+                assertTrue(SSLSocketFactory.class.isAssignableFrom(sf2.getClass()));
+
+                assertFalse(sf2.getClass().getName() + " should not be " + Security.getProperty(SSL_PROPERTY),
+                        sf1.getClass().equals(sf2.getClass()));
+                assertTrue(sf2.getClass().equals(sf4.getClass()));
+
+                resetSslProvider();
+            }
+        } finally {
+            Security.setProperty(SSL_PROPERTY, origProvider);
+        }
+    }
+
+    private String resetSslProvider() {
+        String origProvider = Security.getProperty(SSL_PROPERTY);
+
+        try {
+            Field field_secprops = Security.class.getDeclaredField("secprops");
+            field_secprops.setAccessible(true);
+            Properties secprops = (Properties) field_secprops.get(null);
+            secprops.remove(SSL_PROPERTY);
+
+            Class<?> class_services =
+                    Class.forName("org.apache.harmony.security.fortress.Services");
+            Method m_setNeedRefresh = class_services.getMethod("setNeedRefresh");
+            m_setNeedRefresh.invoke(null);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Cannot find a way to clear out the SocketFactory provider");
+        }
+
+        assertNull(Security.getProperty(SSL_PROPERTY));
+        return origProvider;
+    }
+
     public void test_SSLSocketFactory_defaultConfiguration() throws Exception {
         SSLDefaultConfigurationAsserts.assertSSLSocketFactory(
                 (SSLSocketFactory) SSLSocketFactory.getDefault());
diff --git a/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java b/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java
index 47e83cb..d24ef0b 100644
--- a/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java
+++ b/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java
@@ -192,6 +192,16 @@
         assertNotSame(ssl.getEnabledCipherSuites(), ssl.getEnabledCipherSuites());
     }
 
+    public void test_SSLSocket_setEnabledCipherSuites_storesCopy() throws Exception {
+        SSLSocketFactory sf = (SSLSocketFactory) SSLSocketFactory.getDefault();
+        SSLSocket ssl = (SSLSocket) sf.createSocket();
+        String[] array = new String[] {ssl.getEnabledCipherSuites()[0]};
+        String originalFirstElement = array[0];
+        ssl.setEnabledCipherSuites(array);
+        array[0] = "Modified after having been set";
+        assertEquals(originalFirstElement, ssl.getEnabledCipherSuites()[0]);
+    }
+
     public void test_SSLSocket_setEnabledCipherSuites() throws Exception {
         SSLSocketFactory sf = (SSLSocketFactory) SSLSocketFactory.getDefault();
         SSLSocket ssl = (SSLSocket) sf.createSocket();
@@ -234,6 +244,16 @@
         assertNotSame(ssl.getEnabledProtocols(), ssl.getEnabledProtocols());
     }
 
+    public void test_SSLSocket_setEnabledProtocols_storesCopy() throws Exception {
+        SSLSocketFactory sf = (SSLSocketFactory) SSLSocketFactory.getDefault();
+        SSLSocket ssl = (SSLSocket) sf.createSocket();
+        String[] array = new String[] {ssl.getEnabledProtocols()[0]};
+        String originalFirstElement = array[0];
+        ssl.setEnabledProtocols(array);
+        array[0] = "Modified after having been set";
+        assertEquals(originalFirstElement, ssl.getEnabledProtocols()[0]);
+    }
+
     public void test_SSLSocket_setEnabledProtocols() throws Exception {
         SSLSocketFactory sf = (SSLSocketFactory) SSLSocketFactory.getDefault();
         SSLSocket ssl = (SSLSocket) sf.createSocket();
@@ -281,13 +301,6 @@
         assertFalse(session.isValid());
     }
 
-    public void test_SSLSocket_getHandshakeSession() throws Exception {
-        SSLSocketFactory sf = (SSLSocketFactory) SSLSocketFactory.getDefault();
-        SSLSocket ssl = (SSLSocket) sf.createSocket();
-        SSLSession session = ssl.getHandshakeSession();
-        assertNull(session);
-    }
-
     public void test_SSLSocket_startHandshake() throws Exception {
         final TestSSLContext c = TestSSLContext.create();
         SSLSocket client = (SSLSocket) c.clientContext.getSocketFactory().createSocket(c.host,
@@ -298,7 +311,6 @@
             @Override public Void call() throws Exception {
                 server.startHandshake();
                 assertNotNull(server.getSession());
-                assertNull(server.getHandshakeSession());
                 try {
                     server.getSession().getPeerCertificates();
                     fail();
@@ -510,7 +522,6 @@
                     assertSame(client, socket);
 
                     assertTrue(socket instanceof SSLSocket);
-                    assertNull(((SSLSocket) socket).getHandshakeSession());
 
                     synchronized (handshakeCompletedListenerCalled) {
                         handshakeCompletedListenerCalled[0] = true;
@@ -941,14 +952,6 @@
 
         assertEquals(p.getWantClientAuth(), ssl.getWantClientAuth());
         assertEquals(p.getNeedClientAuth(), ssl.getNeedClientAuth());
-
-        assertNull(p.getEndpointIdentificationAlgorithm());
-        p.setEndpointIdentificationAlgorithm(null);
-        assertNull(p.getEndpointIdentificationAlgorithm());
-        p.setEndpointIdentificationAlgorithm("HTTPS");
-        assertEquals("HTTPS", p.getEndpointIdentificationAlgorithm());
-        p.setEndpointIdentificationAlgorithm("FOO");
-        assertEquals("FOO", p.getEndpointIdentificationAlgorithm());
     }
 
     public void test_SSLSocket_setSSLParameters() throws Exception {
@@ -1132,84 +1135,6 @@
         server.close();
     }
 
-    public void test_SSLSocket_endpointIdentification_Success() throws Exception {
-        final TestSSLContext c = TestSSLContext.create();
-        SSLSocket client = (SSLSocket) c.clientContext.getSocketFactory().createSocket();
-        SSLParameters p = client.getSSLParameters();
-        p.setEndpointIdentificationAlgorithm("HTTPS");
-        client.connect(new InetSocketAddress(c.host, c.port));
-        final SSLSocket server = (SSLSocket) c.serverSocket.accept();
-        ExecutorService executor = Executors.newSingleThreadExecutor();
-        Future<Void> future = executor.submit(new Callable<Void>() {
-            @Override public Void call() throws Exception {
-                server.startHandshake();
-                assertNotNull(server.getSession());
-                try {
-                    server.getSession().getPeerCertificates();
-                    fail();
-                } catch (SSLPeerUnverifiedException expected) {
-                }
-                Certificate[] localCertificates = server.getSession().getLocalCertificates();
-                assertNotNull(localCertificates);
-                TestKeyStore.assertChainLength(localCertificates);
-                assertNotNull(localCertificates[0]);
-                TestSSLContext.assertCertificateInKeyStore(localCertificates[0],
-                                                           c.serverKeyStore);
-                return null;
-            }
-        });
-        executor.shutdown();
-        client.startHandshake();
-        assertNotNull(client.getSession());
-        assertNull(client.getSession().getLocalCertificates());
-        Certificate[] peerCertificates = client.getSession().getPeerCertificates();
-        assertNotNull(peerCertificates);
-        TestKeyStore.assertChainLength(peerCertificates);
-        assertNotNull(peerCertificates[0]);
-        TestSSLContext.assertCertificateInKeyStore(peerCertificates[0], c.serverKeyStore);
-        future.get();
-        client.close();
-        server.close();
-        c.close();
-    }
-
-    public void test_SSLSocket_endpointIdentification_Failure() throws Exception {
-
-        final TestSSLContext c = TestSSLContext.create();
-        SSLSocket client = (SSLSocket) c.clientContext.getSocketFactory().createSocket(
-                InetAddress.getByName("127.0.0.2"), c.port);
-        SSLParameters p = client.getSSLParameters();
-        p.setEndpointIdentificationAlgorithm("HTTPS");
-        client.setSSLParameters(p);
-        // client.connect(new InetSocketAddress(c.host, c.port));
-        final SSLSocket server = (SSLSocket) c.serverSocket.accept();
-        ExecutorService executor = Executors.newSingleThreadExecutor();
-        Future<Void> future = executor.submit(new Callable<Void>() {
-            @Override public Void call() throws Exception {
-                try {
-                    server.startHandshake();
-                    fail("Should receive SSLHandshakeException as server");
-                } catch (SSLHandshakeException expected) {
-                }
-                return null;
-            }
-        });
-        executor.shutdown();
-        try {
-            client.startHandshake();
-            fail("Should throw when hostname does not match expected");
-        } catch (SSLHandshakeException expected) {
-        } finally {
-            try {
-                future.get();
-            } finally {
-                client.close();
-                server.close();
-                c.close();
-            }
-        }
-    }
-
     public void test_SSLSocket_setSoTimeout_basic() throws Exception {
         ServerSocket listening = new ServerSocket(0);
 
diff --git a/luni/src/test/java/libcore/util/ZoneInfoDBTest.java b/luni/src/test/java/libcore/util/ZoneInfoDBTest.java
index 215821d..9875647 100644
--- a/luni/src/test/java/libcore/util/ZoneInfoDBTest.java
+++ b/luni/src/test/java/libcore/util/ZoneInfoDBTest.java
@@ -77,6 +77,29 @@
     }
   }
 
+  // Confirms any caching that exists correctly handles TimeZone mutability.
+  public void testMakeTimeZone_timeZoneMutability() throws Exception {
+    ZoneInfoDB.TzData data = new ZoneInfoDB.TzData(TZDATA_IN_ROOT);
+    String tzId = "Europe/London";
+    ZoneInfo first = data.makeTimeZone(tzId);
+    ZoneInfo second = data.makeTimeZone(tzId);
+    assertNotSame(first, second);
+
+    assertTrue(first.hasSameRules(second));
+
+    first.setID("Not Europe/London");
+
+    assertFalse(first.getID().equals(second.getID()));
+
+    first.setRawOffset(3600);
+    assertFalse(first.getRawOffset() == second.getRawOffset());
+  }
+
+  public void testMakeTimeZone_notFound() throws Exception {
+    ZoneInfoDB.TzData data = new ZoneInfoDB.TzData(TZDATA_IN_ROOT);
+    assertNull(data.makeTimeZone("THIS_TZ_DOES_NOT_EXIST"));
+  }
+
   private static String makeCorruptFile() throws Exception {
     return makeTemporaryFile("invalid content".getBytes());
   }
diff --git a/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/SealedObjectTest.java b/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/SealedObjectTest.java
index 3ea57bf..5cbdab3 100644
--- a/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/SealedObjectTest.java
+++ b/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/SealedObjectTest.java
@@ -165,6 +165,34 @@
                 + "in cipher.", algorithm, so.getAlgorithm());
     }
 
+    // https://code.google.com/p/android/issues/detail?id=73235
+    public void testGetAlgorithmAfterSerialization() throws Exception {
+        String secret = "secret string";
+        String algorithm = "DES";
+        KeyGenerator kg = KeyGenerator.getInstance(algorithm);
+        Key key = kg.generateKey();
+
+        Cipher cipher = Cipher.getInstance(algorithm);
+        cipher.init(Cipher.ENCRYPT_MODE, key);
+        SealedObject so = new SealedObject(secret, cipher);
+
+        assertEquals("The algorithm name should be the same as used "
+                + "in cipher.", algorithm, so.getAlgorithm());
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ObjectOutputStream oos = new ObjectOutputStream(baos);
+        oos.writeObject(so);
+        oos.close();
+
+        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
+        SealedObject readSo = (SealedObject) ois.readObject();
+        ois.close();
+
+        // Bug 73235 would swap the Cipher algorithm and parameters. Parameters is not public but
+        // algorithm is so we check that.
+        assertEquals(so.getAlgorithm(), readSo.getAlgorithm());
+    }
+
     /**
      * getObject(Key key) method testing. Tests if the object sealed with
      * encryption algorithm and specified parameters can be retrieved by
diff --git a/luni/src/test/java/org/apache/harmony/luni/tests/java/net/URLConnectionTest.java b/luni/src/test/java/org/apache/harmony/luni/tests/java/net/URLConnectionTest.java
index d3da174..d52b033 100644
--- a/luni/src/test/java/org/apache/harmony/luni/tests/java/net/URLConnectionTest.java
+++ b/luni/src/test/java/org/apache/harmony/luni/tests/java/net/URLConnectionTest.java
@@ -484,20 +484,6 @@
         fileURLCon.getInputStream().close();
     }
 
-    /**
-     * {@link java.net.URLConnection#getContentLengthLong()}
-     */
-    public void test_getContentLengthLong() throws Exception {
-        assertEquals(testString.getBytes().length, fileURLCon.getContentLengthLong());
-        assertEquals(Support_TestWebData.test1.length, uc.getContentLengthLong());
-        assertEquals(Support_TestWebData.test2.length, uc2.getContentLengthLong());
-
-        assertTrue(jarURLCon.getContentLength() > 0);
-        assertTrue(gifURLCon.getContentLength() > 0);
-
-        fileURLCon.getInputStream().close();
-    }
-
     public void test_getContentType() throws Exception {
         assertTrue("getContentType failed: " + fileURLCon.getContentType(),
                 fileURLCon.getContentType().contains("text/plain"));
@@ -772,39 +758,6 @@
     }
 
     /**
-     * {@link java.net.URLConnection#getHeaderFieldLong(String, long)}
-     */
-    public void test_getHeaderFieldLong() throws IOException, ParseException {
-        // Test getHeaderFieldLong() can read an int value.
-        Support_TestWebData params0 = Support_TestWebData.testParams[0];
-        long hf = uc.getHeaderFieldLong("Content-Length", Long.MIN_VALUE);
-        assertEquals(params0.testLength, hf);
-
-        // Test getHeaderFieldLong() for a value outside of the range of int.
-        Support_TestWebData params2 = Support_TestWebData.testParams[2];
-        hf = uc3.getHeaderFieldLong("Content-Length", Long.MIN_VALUE);
-        assertEquals(params2.testLength, hf);
-
-        // The remaining fields should be invalid or missing. Confirm the default is returned.
-        hf = uc3.getHeaderFieldLong("Content-Encoding", Long.MIN_VALUE);
-        assertEquals(Long.MIN_VALUE, hf);
-        hf = uc3.getHeaderFieldInt("Content-Type", Integer.MIN_VALUE);
-        assertEquals(Integer.MIN_VALUE, hf);
-        hf = uc3.getHeaderFieldInt("Date", Integer.MIN_VALUE);
-        assertEquals(Integer.MIN_VALUE, hf);
-        hf = uc3.getHeaderFieldInt("Expires", Integer.MIN_VALUE);
-        assertEquals(Integer.MIN_VALUE, hf);
-        hf = uc3.getHeaderFieldInt("SERVER", Integer.MIN_VALUE);
-        assertEquals(Integer.MIN_VALUE, hf);
-        hf = uc3.getHeaderFieldInt("Last-Modified", Integer.MIN_VALUE);
-        assertEquals(Integer.MIN_VALUE, hf);
-        hf = uc3.getHeaderFieldInt("accept-ranges", Integer.MIN_VALUE);
-        assertEquals(Integer.MIN_VALUE, hf);
-        hf = uc3.getHeaderFieldInt("DoesNotExist", Integer.MIN_VALUE);
-        assertEquals(Integer.MIN_VALUE, hf);
-    }
-
-    /**
      * {@link java.net.URLConnection#getHeaderField(java.lang.String)}
      */
     public void test_getHeaderFieldLjava_lang_String() {
diff --git a/luni/src/test/resources/math_important_numbers.csv b/luni/src/test/resources/math_important_numbers.csv
new file mode 100644
index 0000000..3c71a4e
--- /dev/null
+++ b/luni/src/test/resources/math_important_numbers.csv
@@ -0,0 +1,738 @@
+#These numbers are automatically generated to test numbers such as pi, pi/2, 0, etc.
+abs,0x1.5bf0a8b145769p1,0x1.5bf0a8b145769p1,2.718281828459045
+abs,0x1.5bf0a8b145769p1,-0x1.5bf0a8b145769p1,-2.718281828459045
+abs,0x0.0p0,0x0.0p0,0.0
+abs,0x0.0p0,-0x0.0p0,-0.0
+abs,0x1.0p0,0x1.0p0,1.0
+abs,0x1.0p0,-0x1.0p0,-1.0
+abs,0x1.0p-1,-0x1.0p-1,-0.5
+abs,0x1.0p-1,0x1.0p-1,0.5
+abs,0x1.921fb54442d18p2,-0x1.921fb54442d18p2,-6.283185307179586
+abs,0x1.815e630c155e1p2,-0x1.815e630c155e1p2,-6.021385919380436
+abs,0x1.709d10d3e7eabp2,-0x1.709d10d3e7eabp2,-5.759586531581287
+abs,0x1.5fdbbe9bba775p2,-0x1.5fdbbe9bba775p2,-5.497787143782138
+abs,0x1.4f1a6c638d03fp2,-0x1.4f1a6c638d03fp2,-5.235987755982989
+abs,0x1.3e591a2b5f908p2,-0x1.3e591a2b5f908p2,-4.974188368183839
+abs,0x1.2d97c7f3321d2p2,-0x1.2d97c7f3321d2p2,-4.71238898038469
+abs,0x1.1cd675bb04a9cp2,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+abs,0x1.0c152382d7365p2,-0x1.0c152382d7365p2,-4.1887902047863905
+abs,0x1.f6a7a2955385dp1,-0x1.f6a7a2955385dp1,-3.926990816987241
+abs,0x1.d524fe24f89f1p1,-0x1.d524fe24f89f1p1,-3.665191429188092
+abs,0x1.b3a259b49db85p1,-0x1.b3a259b49db85p1,-3.4033920413889427
+abs,0x1.921fb54442d18p1,-0x1.921fb54442d18p1,-3.141592653589793
+abs,0x1.709d10d3e7eabp1,-0x1.709d10d3e7eabp1,-2.8797932657906435
+abs,0x1.4f1a6c638d03fp1,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+abs,0x1.2d97c7f3321d2p1,-0x1.2d97c7f3321d2p1,-2.356194490192345
+abs,0x1.0c152382d7365p1,-0x1.0c152382d7365p1,-2.0943951023931953
+abs,0x1.d524fe24f89f1p0,-0x1.d524fe24f89f1p0,-1.832595714594046
+abs,0x1.921fb54442d18p0,-0x1.921fb54442d18p0,-1.5707963267948966
+abs,0x1.4f1a6c638d03fp0,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+abs,0x1.0c152382d7365p0,-0x1.0c152382d7365p0,-1.0471975511965976
+abs,0x1.921fb54442d18p-1,-0x1.921fb54442d18p-1,-0.7853981633974483
+abs,0x1.0c152382d7365p-1,-0x1.0c152382d7365p-1,-0.5235987755982988
+abs,0x1.0c152382d7365p-2,-0x1.0c152382d7365p-2,-0.2617993877991494
+abs,0x0.0p0,0x0.0p0,0.0
+abs,0x1.0c152382d7365p-2,0x1.0c152382d7365p-2,0.2617993877991494
+abs,0x1.0c152382d7365p-1,0x1.0c152382d7365p-1,0.5235987755982988
+abs,0x1.921fb54442d18p-1,0x1.921fb54442d18p-1,0.7853981633974483
+abs,0x1.0c152382d7365p0,0x1.0c152382d7365p0,1.0471975511965976
+abs,0x1.4f1a6c638d03fp0,0x1.4f1a6c638d03fp0,1.3089969389957472
+abs,0x1.921fb54442d18p0,0x1.921fb54442d18p0,1.5707963267948966
+abs,0x1.d524fe24f89f1p0,0x1.d524fe24f89f1p0,1.832595714594046
+abs,0x1.0c152382d7365p1,0x1.0c152382d7365p1,2.0943951023931953
+abs,0x1.2d97c7f3321d2p1,0x1.2d97c7f3321d2p1,2.356194490192345
+abs,0x1.4f1a6c638d03fp1,0x1.4f1a6c638d03fp1,2.6179938779914944
+abs,0x1.709d10d3e7eabp1,0x1.709d10d3e7eabp1,2.8797932657906435
+abs,0x1.921fb54442d18p1,0x1.921fb54442d18p1,3.141592653589793
+abs,0x1.b3a259b49db85p1,0x1.b3a259b49db85p1,3.4033920413889427
+abs,0x1.d524fe24f89f1p1,0x1.d524fe24f89f1p1,3.665191429188092
+abs,0x1.f6a7a2955385dp1,0x1.f6a7a2955385dp1,3.926990816987241
+abs,0x1.0c152382d7365p2,0x1.0c152382d7365p2,4.1887902047863905
+abs,0x1.1cd675bb04a9cp2,0x1.1cd675bb04a9cp2,4.4505895925855405
+abs,0x1.2d97c7f3321d2p2,0x1.2d97c7f3321d2p2,4.71238898038469
+abs,0x1.3e591a2b5f908p2,0x1.3e591a2b5f908p2,4.974188368183839
+abs,0x1.4f1a6c638d03fp2,0x1.4f1a6c638d03fp2,5.235987755982989
+abs,0x1.5fdbbe9bba775p2,0x1.5fdbbe9bba775p2,5.497787143782138
+abs,0x1.709d10d3e7eabp2,0x1.709d10d3e7eabp2,5.759586531581287
+abs,0x1.815e630c155e1p2,0x1.815e630c155e1p2,6.021385919380436
+abs,0x1.921fb54442d18p2,0x1.921fb54442d18p2,6.283185307179586
+acos,0x1.921fb54442d18p0,0x0.0p0,0.0
+acos,0x1.921fb54442d18p0,-0x0.0p0,-0.0
+acos,0x0.0p0,0x1.0p0,1.0
+acos,0x1.921fb54442d18p1,-0x1.0p0,-1.0
+acos,0x1.0c152382d7366p1,-0x1.0p-1,-0.5
+acos,0x1.0c152382d7366p0,0x1.0p-1,0.5
+acos,0x1.3cb0785319b73p1,-0x1.921fb54442d18p-1,-0.7853981633974483
+acos,0x1.0f994d58bf2a8p1,-0x1.0c152382d7365p-1,-0.5235987755982988
+acos,0x1.d5ef495ee4bfcp0,-0x1.0c152382d7365p-2,-0.2617993877991494
+acos,0x1.921fb54442d18p0,0x0.0p0,0.0
+acos,0x1.4e502129a0e35p0,0x1.0c152382d7365p-2,0.2617993877991494
+acos,0x1.050ccfd7074dfp0,0x1.0c152382d7365p-1,0.5235987755982988
+acos,0x1.55bcf3c4a4694p-1,0x1.921fb54442d18p-1,0.7853981633974483
+asin,0x0.0p0,0x0.0p0,0.0
+asin,-0x0.0p0,-0x0.0p0,-0.0
+asin,0x1.921fb54442d18p0,0x1.0p0,1.0
+asin,-0x1.921fb54442d18p0,-0x1.0p0,-1.0
+asin,-0x1.0c152382d7366p-1,-0x1.0p-1,-0.5
+asin,0x1.0c152382d7366p-1,0x1.0p-1,0.5
+asin,-0x1.ce8276c3e139cp-1,-0x1.921fb54442d18p-1,-0.7853981633974483
+asin,-0x1.1a25cada77072p-1,-0x1.0c152382d7365p-1,-0.5235987755982988
+asin,-0x1.0f3e506a87b8dp-2,-0x1.0c152382d7365p-2,-0.2617993877991494
+asin,0x0.0p0,0x0.0p0,0.0
+asin,0x1.0f3e506a87b8dp-2,0x1.0c152382d7365p-2,0.2617993877991494
+asin,0x1.1a25cada77072p-1,0x1.0c152382d7365p-1,0.5235987755982988
+asin,0x1.ce8276c3e139cp-1,0x1.921fb54442d18p-1,0.7853981633974483
+atan,0x1.37e1637253389p0,0x1.5bf0a8b145769p1,2.718281828459045
+atan,-0x1.37e1637253389p0,-0x1.5bf0a8b145769p1,-2.718281828459045
+atan,0x0.0p0,0x0.0p0,0.0
+atan,-0x0.0p0,-0x0.0p0,-0.0
+atan,0x1.921fb54442d18p-1,0x1.0p0,1.0
+atan,-0x1.921fb54442d18p-1,-0x1.0p0,-1.0
+atan,-0x1.dac670561bb4fp-2,-0x1.0p-1,-0.5
+atan,0x1.dac670561bb4fp-2,0x1.0p-1,0.5
+atan,-0x1.69b8154baf42ep0,-0x1.921fb54442d18p2,-6.283185307179586
+atan,-0x1.67fe45e9cabc4p0,-0x1.815e630c155e1p2,-6.021385919380436
+atan,-0x1.661d6ceb7c4e6p0,-0x1.709d10d3e7eabp2,-5.759586531581287
+atan,-0x1.64102fc571c74p0,-0x1.5fdbbe9bba775p2,-5.497787143782138
+atan,-0x1.61d03090f6048p0,-0x1.4f1a6c638d03fp2,-5.235987755982989
+atan,-0x1.5f55ce92d0fd9p0,-0x1.3e591a2b5f908p2,-4.974188368183839
+atan,-0x1.5c97d37d98aa4p0,-0x1.2d97c7f3321d2p2,-4.71238898038469
+atan,-0x1.598b06657c521p0,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+atan,-0x1.56219a568d94cp0,-0x1.0c152382d7365p2,-4.1887902047863905
+atan,-0x1.524a69fcff2afp0,-0x1.f6a7a2955385dp1,-3.926990816987241
+atan,-0x1.4defeaff7c88p0,-0x1.d524fe24f89f1p1,-3.665191429188092
+atan,-0x1.48f6b941de94p0,-0x1.b3a259b49db85p1,-3.4033920413889427
+atan,-0x1.433b8a322ddd2p0,-0x1.921fb54442d18p1,-3.141592653589793
+atan,-0x1.3c903f4b32aaap0,-0x1.709d10d3e7eabp1,-2.8797932657906435
+atan,-0x1.34b7a85467ddcp0,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+atan,-0x1.2b5f4b53c7949p0,-0x1.2d97c7f3321d2p1,-2.356194490192345
+atan,-0x1.201634ac2828bp0,-0x1.0c152382d7365p1,-2.0943951023931953
+atan,-0x1.123f6ef47e0c2p0,-0x1.d524fe24f89f1p0,-1.832595714594046
+atan,-0x1.00fe987ed02ffp0,-0x1.921fb54442d18p0,-1.5707963267948966
+atan,-0x1.d63c8fb14e334p-1,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+atan,-0x1.9ded0009ac5adp-1,-0x1.0c152382d7365p0,-1.0471975511965976
+atan,-0x1.54e04c05d06ap-1,-0x1.921fb54442d18p-1,-0.7853981633974483
+atan,-0x1.edec9c192bfaap-2,-0x1.0c152382d7365p-1,-0.5235987755982988
+atan,-0x1.0632b28478608p-2,-0x1.0c152382d7365p-2,-0.2617993877991494
+atan,0x0.0p0,0x0.0p0,0.0
+atan,0x1.0632b28478608p-2,0x1.0c152382d7365p-2,0.2617993877991494
+atan,0x1.edec9c192bfaap-2,0x1.0c152382d7365p-1,0.5235987755982988
+atan,0x1.54e04c05d06ap-1,0x1.921fb54442d18p-1,0.7853981633974483
+atan,0x1.9ded0009ac5adp-1,0x1.0c152382d7365p0,1.0471975511965976
+atan,0x1.d63c8fb14e334p-1,0x1.4f1a6c638d03fp0,1.3089969389957472
+atan,0x1.00fe987ed02ffp0,0x1.921fb54442d18p0,1.5707963267948966
+atan,0x1.123f6ef47e0c2p0,0x1.d524fe24f89f1p0,1.832595714594046
+atan,0x1.201634ac2828bp0,0x1.0c152382d7365p1,2.0943951023931953
+atan,0x1.2b5f4b53c7949p0,0x1.2d97c7f3321d2p1,2.356194490192345
+atan,0x1.34b7a85467ddcp0,0x1.4f1a6c638d03fp1,2.6179938779914944
+atan,0x1.3c903f4b32aaap0,0x1.709d10d3e7eabp1,2.8797932657906435
+atan,0x1.433b8a322ddd2p0,0x1.921fb54442d18p1,3.141592653589793
+atan,0x1.48f6b941de94p0,0x1.b3a259b49db85p1,3.4033920413889427
+atan,0x1.4defeaff7c88p0,0x1.d524fe24f89f1p1,3.665191429188092
+atan,0x1.524a69fcff2afp0,0x1.f6a7a2955385dp1,3.926990816987241
+atan,0x1.56219a568d94cp0,0x1.0c152382d7365p2,4.1887902047863905
+atan,0x1.598b06657c521p0,0x1.1cd675bb04a9cp2,4.4505895925855405
+atan,0x1.5c97d37d98aa4p0,0x1.2d97c7f3321d2p2,4.71238898038469
+atan,0x1.5f55ce92d0fd9p0,0x1.3e591a2b5f908p2,4.974188368183839
+atan,0x1.61d03090f6048p0,0x1.4f1a6c638d03fp2,5.235987755982989
+atan,0x1.64102fc571c74p0,0x1.5fdbbe9bba775p2,5.497787143782138
+atan,0x1.661d6ceb7c4e6p0,0x1.709d10d3e7eabp2,5.759586531581287
+atan,0x1.67fe45e9cabc4p0,0x1.815e630c155e1p2,6.021385919380436
+atan,0x1.69b8154baf42ep0,0x1.921fb54442d18p2,6.283185307179586
+cos,-0x1.d2cec9a554007p-1,0x1.5bf0a8b145769p1,2.718281828459045
+cos,-0x1.d2cec9a554007p-1,-0x1.5bf0a8b145769p1,-2.718281828459045
+cos,0x1.0p0,0x0.0p0,0.0
+cos,0x1.0p0,-0x0.0p0,-0.0
+cos,0x1.14a280fb5068cp-1,0x1.0p0,1.0
+cos,0x1.14a280fb5068cp-1,-0x1.0p0,-1.0
+cos,0x1.c1528065b7d5p-1,-0x1.0p-1,-0.5
+cos,0x1.c1528065b7d5p-1,0x1.0p-1,0.5
+cos,0x1.0p0,-0x1.921fb54442d18p2,-6.283185307179586
+cos,0x1.ee8dd4748bf13p-1,-0x1.815e630c155e1p2,-6.021385919380436
+cos,0x1.bb67ae8584ca8p-1,-0x1.709d10d3e7eabp2,-5.759586531581287
+cos,0x1.6a09e667f3bcbp-1,-0x1.5fdbbe9bba775p2,-5.497787143782138
+cos,0x1.0000000000001p-1,-0x1.4f1a6c638d03fp2,-5.235987755982989
+cos,0x1.0907dc1930688p-2,-0x1.3e591a2b5f908p2,-4.974188368183839
+cos,-0x1.a79394c9e8a0ap-53,-0x1.2d97c7f3321d2p2,-4.71238898038469
+cos,-0x1.0907dc193068ep-2,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+cos,-0x1.0000000000004p-1,-0x1.0c152382d7365p2,-4.1887902047863905
+cos,-0x1.6a09e667f3bdp-1,-0x1.f6a7a2955385dp1,-3.926990816987241
+cos,-0x1.bb67ae8584cacp-1,-0x1.d524fe24f89f1p1,-3.665191429188092
+cos,-0x1.ee8dd4748bf15p-1,-0x1.b3a259b49db85p1,-3.4033920413889427
+cos,-0x1.0p0,-0x1.921fb54442d18p1,-3.141592653589793
+cos,-0x1.ee8dd4748bf14p-1,-0x1.709d10d3e7eabp1,-2.8797932657906435
+cos,-0x1.bb67ae8584cabp-1,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+cos,-0x1.6a09e667f3bccp-1,-0x1.2d97c7f3321d2p1,-2.356194490192345
+cos,-0x1.ffffffffffffcp-2,-0x1.0c152382d7365p1,-2.0943951023931953
+cos,-0x1.0907dc193068ep-2,-0x1.d524fe24f89f1p0,-1.832595714594046
+cos,0x1.1a62633145c07p-54,-0x1.921fb54442d18p0,-1.5707963267948966
+cos,0x1.0907dc193069p-2,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+cos,0x1.0000000000001p-1,-0x1.0c152382d7365p0,-1.0471975511965976
+cos,0x1.6a09e667f3bcdp-1,-0x1.921fb54442d18p-1,-0.7853981633974483
+cos,0x1.bb67ae8584cabp-1,-0x1.0c152382d7365p-1,-0.5235987755982988
+cos,0x1.ee8dd4748bf15p-1,-0x1.0c152382d7365p-2,-0.2617993877991494
+cos,0x1.0p0,0x0.0p0,0.0
+cos,0x1.ee8dd4748bf15p-1,0x1.0c152382d7365p-2,0.2617993877991494
+cos,0x1.bb67ae8584cabp-1,0x1.0c152382d7365p-1,0.5235987755982988
+cos,0x1.6a09e667f3bcdp-1,0x1.921fb54442d18p-1,0.7853981633974483
+cos,0x1.0000000000001p-1,0x1.0c152382d7365p0,1.0471975511965976
+cos,0x1.0907dc193069p-2,0x1.4f1a6c638d03fp0,1.3089969389957472
+cos,0x1.1a62633145c07p-54,0x1.921fb54442d18p0,1.5707963267948966
+cos,-0x1.0907dc193068ep-2,0x1.d524fe24f89f1p0,1.832595714594046
+cos,-0x1.ffffffffffffcp-2,0x1.0c152382d7365p1,2.0943951023931953
+cos,-0x1.6a09e667f3bccp-1,0x1.2d97c7f3321d2p1,2.356194490192345
+cos,-0x1.bb67ae8584cabp-1,0x1.4f1a6c638d03fp1,2.6179938779914944
+cos,-0x1.ee8dd4748bf14p-1,0x1.709d10d3e7eabp1,2.8797932657906435
+cos,-0x1.0p0,0x1.921fb54442d18p1,3.141592653589793
+cos,-0x1.ee8dd4748bf15p-1,0x1.b3a259b49db85p1,3.4033920413889427
+cos,-0x1.bb67ae8584cacp-1,0x1.d524fe24f89f1p1,3.665191429188092
+cos,-0x1.6a09e667f3bdp-1,0x1.f6a7a2955385dp1,3.926990816987241
+cos,-0x1.0000000000004p-1,0x1.0c152382d7365p2,4.1887902047863905
+cos,-0x1.0907dc193068ep-2,0x1.1cd675bb04a9cp2,4.4505895925855405
+cos,-0x1.a79394c9e8a0ap-53,0x1.2d97c7f3321d2p2,4.71238898038469
+cos,0x1.0907dc1930688p-2,0x1.3e591a2b5f908p2,4.974188368183839
+cos,0x1.0000000000001p-1,0x1.4f1a6c638d03fp2,5.235987755982989
+cos,0x1.6a09e667f3bcbp-1,0x1.5fdbbe9bba775p2,5.497787143782138
+cos,0x1.bb67ae8584ca8p-1,0x1.709d10d3e7eabp2,5.759586531581287
+cos,0x1.ee8dd4748bf13p-1,0x1.815e630c155e1p2,6.021385919380436
+cos,0x1.0p0,0x1.921fb54442d18p2,6.283185307179586
+cosh,0x1.e70c4a4f41685p2,0x1.5bf0a8b145769p1,2.718281828459045
+cosh,0x1.e70c4a4f41685p2,-0x1.5bf0a8b145769p1,-2.718281828459045
+cosh,0x1.0p0,0x0.0p0,0.0
+cosh,0x1.0p0,-0x0.0p0,-0.0
+cosh,0x1.8b07551d9f551p0,0x1.0p0,1.0
+cosh,0x1.8b07551d9f551p0,-0x1.0p0,-1.0
+cosh,0x1.20ac1862ae8dp0,-0x1.0p-1,-0.5
+cosh,0x1.20ac1862ae8dp0,0x1.0p-1,0.5
+cosh,0x1.0bbf2bc2b69c6p8,-0x1.921fb54442d18p2,-6.283185307179586
+cosh,0x1.9c26de7a4c876p7,-0x1.815e630c155e1p2,-6.021385919380436
+cosh,0x1.3d38653fd9955p7,-0x1.709d10d3e7eabp2,-5.759586531581287
+cosh,0x1.e84f70f559672p6,-0x1.5fdbbe9bba775p2,-5.497787143782138
+cosh,0x1.77d703b1fef8ep6,-0x1.4f1a6c638d03fp2,-5.235987755982989
+cosh,0x1.2146cfce7a73dp6,-0x1.3e591a2b5f908p2,-4.974188368183839
+cosh,0x1.bd4e9aa3e9cdbp5,-0x1.2d97c7f3321d2p2,-4.71238898038469
+cosh,0x1.56c1a783ea3bcp5,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+cosh,0x1.07d51ffbc7ab2p5,-0x1.0c152382d7365p2,-4.1887902047863905
+cosh,0x1.9630955c947f2p4,-0x1.f6a7a2955385dp1,-3.926990816987241
+cosh,0x1.38b6b51cfc1f1p4,-0x1.d524fe24f89f1p1,-3.665191429188092
+cosh,0x1.e19635bf3b425p3,-0x1.b3a259b49db85p1,-3.4033920413889427
+cosh,0x1.72f147fee4p3,-0x1.921fb54442d18p1,-3.141592653589793
+cosh,0x1.1dde27bb3f2c8p3,-0x1.709d10d3e7eabp1,-2.8797932657906435
+cosh,0x1.b8ff233b92bd2p2,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+cosh,0x1.54a7f8a1b9b92p2,-0x1.2d97c7f3321d2p1,-2.356194490192345
+cosh,0x1.07cc2972b616ep2,-0x1.0c152382d7365p1,-2.0943951023931953
+cosh,0x1.9a3edca811aeep1,-0x1.d524fe24f89f1p0,-1.832595714594046
+cosh,0x1.412cc2a8d4e9ep1,-0x1.921fb54442d18p0,-1.5707963267948966
+cosh,0x1.fc7c7b72ba27ep0,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+cosh,0x1.99ac66460ce4p0,-0x1.0c152382d7365p0,-1.0471975511965976
+cosh,0x1.531994ce525b9p0,-0x1.921fb54442d18p-1,-0.7853981633974483
+cosh,0x1.23e6a89aab514p0,-0x1.0c152382d7365p-1,-0.5235987755982988
+cosh,0x1.08d2bd7d0bc1bp0,-0x1.0c152382d7365p-2,-0.2617993877991494
+cosh,0x1.0p0,0x0.0p0,0.0
+cosh,0x1.08d2bd7d0bc1bp0,0x1.0c152382d7365p-2,0.2617993877991494
+cosh,0x1.23e6a89aab514p0,0x1.0c152382d7365p-1,0.5235987755982988
+cosh,0x1.531994ce525b9p0,0x1.921fb54442d18p-1,0.7853981633974483
+cosh,0x1.99ac66460ce4p0,0x1.0c152382d7365p0,1.0471975511965976
+cosh,0x1.fc7c7b72ba27ep0,0x1.4f1a6c638d03fp0,1.3089969389957472
+cosh,0x1.412cc2a8d4e9ep1,0x1.921fb54442d18p0,1.5707963267948966
+cosh,0x1.9a3edca811aeep1,0x1.d524fe24f89f1p0,1.832595714594046
+cosh,0x1.07cc2972b616ep2,0x1.0c152382d7365p1,2.0943951023931953
+cosh,0x1.54a7f8a1b9b92p2,0x1.2d97c7f3321d2p1,2.356194490192345
+cosh,0x1.b8ff233b92bd2p2,0x1.4f1a6c638d03fp1,2.6179938779914944
+cosh,0x1.1dde27bb3f2c8p3,0x1.709d10d3e7eabp1,2.8797932657906435
+cosh,0x1.72f147fee4p3,0x1.921fb54442d18p1,3.141592653589793
+cosh,0x1.e19635bf3b425p3,0x1.b3a259b49db85p1,3.4033920413889427
+cosh,0x1.38b6b51cfc1f1p4,0x1.d524fe24f89f1p1,3.665191429188092
+cosh,0x1.9630955c947f2p4,0x1.f6a7a2955385dp1,3.926990816987241
+cosh,0x1.07d51ffbc7ab2p5,0x1.0c152382d7365p2,4.1887902047863905
+cosh,0x1.56c1a783ea3bcp5,0x1.1cd675bb04a9cp2,4.4505895925855405
+cosh,0x1.bd4e9aa3e9cdbp5,0x1.2d97c7f3321d2p2,4.71238898038469
+cosh,0x1.2146cfce7a73dp6,0x1.3e591a2b5f908p2,4.974188368183839
+cosh,0x1.77d703b1fef8ep6,0x1.4f1a6c638d03fp2,5.235987755982989
+cosh,0x1.e84f70f559672p6,0x1.5fdbbe9bba775p2,5.497787143782138
+cosh,0x1.3d38653fd9955p7,0x1.709d10d3e7eabp2,5.759586531581287
+cosh,0x1.9c26de7a4c876p7,0x1.815e630c155e1p2,6.021385919380436
+cosh,0x1.0bbf2bc2b69c6p8,0x1.921fb54442d18p2,6.283185307179586
+exp,0x1.e4efb75e4527ap3,0x1.5bf0a8b145769p1,2.718281828459045
+exp,0x1.0e49787e20548p-4,-0x1.5bf0a8b145769p1,-2.718281828459045
+exp,0x1.0p0,0x0.0p0,0.0
+exp,0x1.0p0,-0x0.0p0,-0.0
+exp,0x1.5bf0a8b14576ap1,0x1.0p0,1.0
+exp,0x1.78b56362cef38p-2,-0x1.0p0,-1.0
+exp,0x1.368b2fc6f960ap-1,-0x1.0p-1,-0.5
+exp,0x1.a61298e1e069cp0,0x1.0p-1,0.5
+exp,0x1.e989f5d6dff5ep-10,-0x1.921fb54442d18p2,-6.283185307179586
+exp,0x1.3e0545d310facp-9,-0x1.815e630c155e1p2,-6.021385919380436
+exp,0x1.9d317c88e8c75p-9,-0x1.709d10d3e7eabp2,-5.759586531581287
+exp,0x1.0c6c89f32cf3bp-8,-0x1.5fdbbe9bba775p2,-5.497787143782138
+exp,0x1.5cc10db1e9ap-8,-0x1.4f1a6c638d03fp2,-5.235987755982989
+exp,0x1.c51fd34fff925p-8,-0x1.3e591a2b5f908p2,-4.974188368183839
+exp,0x1.265d4e92b6b9cp-7,-0x1.2d97c7f3321d2p2,-4.71238898038469
+exp,0x1.7e752d40d9f68p-7,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+exp,0x1.f0ea0d2fef998p-7,-0x1.0c152382d7365p2,-4.1887902047863905
+exp,0x1.42cfd6c758445p-6,-0x1.f6a7a2955385dp1,-3.926990816987241
+exp,0x1.a36b1f41cd0d4p-6,-0x1.d524fe24f89f1p1,-3.665191429188092
+exp,0x1.1077d12ac7f27p-5,-0x1.b3a259b49db85p1,-3.4033920413889427
+exp,0x1.620227b598efap-5,-0x1.921fb54442d18p1,-3.141592653589793
+exp,0x1.cbf37855eeab7p-5,-0x1.709d10d3e7eabp1,-2.8797932657906435
+exp,0x1.2acca269f2ff5p-4,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+exp,0x1.843844e012c48p-4,-0x1.2d97c7f3321d2p1,-2.356194490192345
+exp,0x1.f86696ab8ba32p-4,-0x1.0c152382d7365p1,-2.0943951023931953
+exp,0x1.47ace27295d4bp-3,-0x1.d524fe24f89f1p0,-1.832595714594046
+exp,0x1.a9bcc46f767ep-3,-0x1.921fb54442d18p0,-1.5707963267948966
+exp,0x1.1492b1531c763p-2,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+exp,0x1.6757859d664c8p-2,-0x1.0c152382d7365p0,-1.0471975511965976
+exp,0x1.d2e171cf04879p-2,-0x1.921fb54442d18p-1,-0.7853981633974483
+exp,0x1.2f4d1112a3e2ap-1,-0x1.0c152382d7365p-1,-0.5235987755982988
+exp,0x1.8a1195bf0aa84p-1,-0x1.0c152382d7365p-2,-0.2617993877991494
+exp,0x1.0p0,0x0.0p0,0.0
+exp,0x1.4c9cb01a922f4p0,0x1.0c152382d7365p-2,0.2617993877991494
+exp,0x1.b026c8ac04b14p0,0x1.0c152382d7365p-1,0.5235987755982988
+exp,0x1.18bd669471caap1,0x1.921fb54442d18p-1,0.7853981633974483
+exp,0x1.6cc17592601a7p1,0x1.0c152382d7365p0,1.0471975511965976
+exp,0x1.d9ea254856992p1,0x1.4f1a6c638d03fp0,1.3089969389957472
+exp,0x1.33dedc855935fp2,0x1.921fb54442d18p0,1.5707963267948966
+exp,0x1.900175947d004p2,0x1.d524fe24f89f1p0,1.832595714594046
+exp,0x1.03db5c455effap3,0x1.0c152382d7365p1,2.0943951023931953
+exp,0x1.519f8817f9939p3,0x1.2d97c7f3321d2p1,2.356194490192345
+exp,0x1.b6a989f6bed72p3,0x1.4f1a6c638d03fp1,2.6179938779914944
+exp,0x1.1cf82dff14353p4,0x1.709d10d3e7eabp1,2.8797932657906435
+exp,0x1.724046eb09339p4,0x1.921fb54442d18p1,3.141592653589793
+exp,0x1.e10df9d6a5de5p4,0x1.b3a259b49db85p1,3.4033920413889427
+exp,0x1.388247b913e57p5,0x1.d524fe24f89f1p1,3.665191429188092
+exp,0x1.96083b61bb941p5,0x1.f6a7a2955385dp1,3.926990816987241
+exp,0x1.07c598ab5e2bap6,0x1.0c152382d7365p2,4.1887902047863905
+exp,0x1.56b5b3da8034fp6,0x1.1cd675bb04a9cp2,4.4505895925855405
+exp,0x1.bd4567b97538p6,0x1.2d97c7f3321d2p2,4.71238898038469
+exp,0x1.2143458ed3d3dp7,0x1.3e591a2b5f908p2,4.974188368183839
+exp,0x1.77d44a2fe3951p7,0x1.4f1a6c638d03fp2,5.235987755982989
+exp,0x1.e84d581c4580cp7,0x1.5fdbbe9bba775p2,5.497787143782138
+exp,0x1.3d3796a71b50ep8,0x1.709d10d3e7eabp2,5.759586531581287
+exp,0x1.9c263f77a99ddp8,0x1.815e630c155e1p2,6.021385919380436
+exp,0x1.0bbeee9177e18p9,0x1.921fb54442d18p2,6.283185307179586
+log,0x1.0p0,0x1.5bf0a8b145769p1,2.718281828459045
+log,0x0.0p0,0x1.0p0,1.0
+log,-0x1.62e42fefa39efp-1,0x1.0p-1,0.5
+log,-0x1.5715d30bf9b3dp0,0x1.0c152382d7365p-2,0.2617993877991494
+log,-0x1.4b4776284fc8bp-1,0x1.0c152382d7365p-1,0.5235987755982988
+log,-0x1.eeb95b094c193p-3,0x1.921fb54442d18p-1,0.7853981633974483
+log,0x1.79cb9c753d63fp-5,0x1.0c152382d7365p0,1.0471975511965976
+log,0x1.13b931cb7c7dbp-2,0x1.4f1a6c638d03fp0,1.3089969389957472
+log,0x1.ce6bb25aa1315p-2,0x1.921fb54442d18p0,1.5707963267948966
+log,0x1.3622afae57e34p-1,0x1.d524fe24f89f1p0,1.832595714594046
+log,0x1.7a80e9b6f7753p-1,0x1.0c152382d7365p1,2.0943951023931953
+log,0x1.b6cef8934d5bp-1,0x1.2d97c7f3321d2p1,2.356194490192345
+log,0x1.ecc0c8d561dddp-1,0x1.4f1a6c638d03fp1,2.6179938779914944
+log,0x1.0ec6a3e3ed35ap0,0x1.709d10d3e7eabp1,2.8797932657906435
+log,0x1.250d048e7a1bdp0,0x1.921fb54442d18p1,3.141592653589793
+log,0x1.398ab25a37d65p0,0x1.b3a259b49db85p1,3.4033920413889427
+log,0x1.4c836fcefdc12p0,0x1.d524fe24f89f1p1,3.665191429188092
+log,0x1.5e2cf41daf501p0,0x1.f6a7a2955385dp1,3.926990816987241
+log,0x1.6eb28cd34d8a1p0,0x1.0c152382d7365p2,4.1887902047863905
+log,0x1.7e37a533563b7p0,0x1.1cd675bb04a9cp2,4.4505895925855405
+log,0x1.8cd99441787dp0,0x1.2d97c7f3321d2p2,4.71238898038469
+log,0x1.9ab0edb49cb1cp0,0x1.3e591a2b5f908p2,4.974188368183839
+log,0x1.a7d27c6282be6p0,0x1.4f1a6c638d03fp2,5.235987755982989
+log,0x1.b44fff81fc225p0,0x1.5fdbbe9bba775p2,5.497787143782138
+log,0x1.c038bbdbbf052p0,0x1.709d10d3e7eabp2,5.759586531581287
+log,0x1.cb99ecae3cca3p0,0x1.815e630c155e1p2,6.021385919380436
+log,0x1.d67f1c864beb4p0,0x1.921fb54442d18p2,6.283185307179586
+log10,0x1.bcb7b1526e50ep-2,0x1.5bf0a8b145769p1,2.718281828459045
+log10,0x0.0p0,0x1.0p0,1.0
+log10,-0x1.34413509f79ffp-2,0x1.0p-1,0.5
+log10,-0x1.2a0004239932p-1,0x1.0c152382d7365p-2,0.2617993877991494
+log10,-0x1.1fbed33d3ac41p-2,0x1.0c152382d7365p-1,0.5235987755982988
+log10,-0x1.adb63b88d410dp-4,0x1.921fb54442d18p-1,0.7853981633974483
+log10,0x1.48261ccbcdbd2p-6,0x1.0c152382d7365p0,1.0471975511965976
+log10,0x1.defb0abb57f05p-4,0x1.4f1a6c638d03fp0,1.3089969389957472
+log10,0x1.91a74c4f85377p-3,0x1.921fb54442d18p0,1.5707963267948966
+log10,0x1.0d615927e723dp-2,0x1.d524fe24f89f1p0,1.832595714594046
+log10,0x1.48c396d6b47bcp-2,0x1.0c152382d7365p1,2.0943951023931953
+log10,0x1.7d24ea82c85bap-2,0x1.2d97c7f3321d2p1,2.356194490192345
+log10,0x1.abfff7b8cd9cp-2,0x1.4f1a6c638d03fp1,2.6179938779914944
+log10,0x1.d662cfccfef7ap-2,0x1.709d10d3e7eabp1,2.8797932657906435
+log10,0x1.fd14db31ba3bap-2,0x1.921fb54442d18p1,3.141592653589793
+log10,0x1.1056c453e917ep-1,0x1.b3a259b49db85p1,3.4033920413889427
+log10,0x1.20d14718ef61ep-1,0x1.d524fe24f89f1p1,3.665191429188092
+log10,0x1.30289e09e9adep-1,0x1.f6a7a2955385dp1,3.926990816987241
+log10,0x1.3e8265f0560dep-1,0x1.0c152382d7365p2,4.1887902047863905
+log10,0x1.4bfd6285d680ep-1,0x1.1cd675bb04a9cp2,4.4505895925855405
+log10,0x1.58b30fc65ffdcp-1,0x1.2d97c7f3321d2p2,4.71238898038469
+log10,0x1.64b8c69bdef01p-1,0x1.3e591a2b5f908p2,4.974188368183839
+log10,0x1.70209661629ep-1,0x1.4f1a6c638d03fp2,5.235987755982989
+log10,0x1.7af9e9467241ep-1,0x1.5fdbbe9bba775p2,5.497787143782138
+log10,0x1.8552026b7b4bcp-1,0x1.709d10d3e7eabp2,5.759586531581287
+log10,0x1.8f345fefe5fdep-1,0x1.815e630c155e1p2,6.021385919380436
+log10,0x1.98ab081dd8eddp-1,0x1.921fb54442d18p2,6.283185307179586
+sin,0x1.a4a3d9c2131dfp-2,0x1.5bf0a8b145769p1,2.718281828459045
+sin,-0x1.a4a3d9c2131dfp-2,-0x1.5bf0a8b145769p1,-2.718281828459045
+sin,0x0.0p0,0x0.0p0,0.0
+sin,-0x0.0p0,-0x0.0p0,-0.0
+sin,0x1.aed548f090ceep-1,0x1.0p0,1.0
+sin,-0x1.aed548f090ceep-1,-0x1.0p0,-1.0
+sin,-0x1.eaee8744b05fp-2,-0x1.0p-1,-0.5
+sin,0x1.eaee8744b05fp-2,0x1.0p-1,0.5
+sin,0x1.1a62633145c07p-52,-0x1.921fb54442d18p2,-6.283185307179586
+sin,0x1.0907dc193069fp-2,-0x1.815e630c155e1p2,-6.021385919380436
+sin,0x1.0000000000004p-1,-0x1.709d10d3e7eabp2,-5.759586531581287
+sin,0x1.6a09e667f3bcep-1,-0x1.5fdbbe9bba775p2,-5.497787143782138
+sin,0x1.bb67ae8584caap-1,-0x1.4f1a6c638d03fp2,-5.235987755982989
+sin,0x1.ee8dd4748bf16p-1,-0x1.3e591a2b5f908p2,-4.974188368183839
+sin,0x1.0p0,-0x1.2d97c7f3321d2p2,-4.71238898038469
+sin,0x1.ee8dd4748bf15p-1,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+sin,0x1.bb67ae8584ca9p-1,-0x1.0c152382d7365p2,-4.1887902047863905
+sin,0x1.6a09e667f3bc9p-1,-0x1.f6a7a2955385dp1,-3.926990816987241
+sin,0x1.ffffffffffffbp-2,-0x1.d524fe24f89f1p1,-3.665191429188092
+sin,0x1.0907dc1930691p-2,-0x1.b3a259b49db85p1,-3.4033920413889427
+sin,-0x1.1a62633145c07p-53,-0x1.921fb54442d18p1,-3.141592653589793
+sin,-0x1.0907dc1930695p-2,-0x1.709d10d3e7eabp1,-2.8797932657906435
+sin,-0x1.fffffffffffffp-2,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+sin,-0x1.6a09e667f3bcdp-1,-0x1.2d97c7f3321d2p1,-2.356194490192345
+sin,-0x1.bb67ae8584cabp-1,-0x1.0c152382d7365p1,-2.0943951023931953
+sin,-0x1.ee8dd4748bf15p-1,-0x1.d524fe24f89f1p0,-1.832595714594046
+sin,-0x1.0p0,-0x1.921fb54442d18p0,-1.5707963267948966
+sin,-0x1.ee8dd4748bf15p-1,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+sin,-0x1.bb67ae8584caap-1,-0x1.0c152382d7365p0,-1.0471975511965976
+sin,-0x1.6a09e667f3bccp-1,-0x1.921fb54442d18p-1,-0.7853981633974483
+sin,-0x1.fffffffffffffp-2,-0x1.0c152382d7365p-1,-0.5235987755982988
+sin,-0x1.0907dc193069p-2,-0x1.0c152382d7365p-2,-0.2617993877991494
+sin,0x0.0p0,0x0.0p0,0.0
+sin,0x1.0907dc193069p-2,0x1.0c152382d7365p-2,0.2617993877991494
+sin,0x1.fffffffffffffp-2,0x1.0c152382d7365p-1,0.5235987755982988
+sin,0x1.6a09e667f3bccp-1,0x1.921fb54442d18p-1,0.7853981633974483
+sin,0x1.bb67ae8584caap-1,0x1.0c152382d7365p0,1.0471975511965976
+sin,0x1.ee8dd4748bf15p-1,0x1.4f1a6c638d03fp0,1.3089969389957472
+sin,0x1.0p0,0x1.921fb54442d18p0,1.5707963267948966
+sin,0x1.ee8dd4748bf15p-1,0x1.d524fe24f89f1p0,1.832595714594046
+sin,0x1.bb67ae8584cabp-1,0x1.0c152382d7365p1,2.0943951023931953
+sin,0x1.6a09e667f3bcdp-1,0x1.2d97c7f3321d2p1,2.356194490192345
+sin,0x1.fffffffffffffp-2,0x1.4f1a6c638d03fp1,2.6179938779914944
+sin,0x1.0907dc1930695p-2,0x1.709d10d3e7eabp1,2.8797932657906435
+sin,0x1.1a62633145c07p-53,0x1.921fb54442d18p1,3.141592653589793
+sin,-0x1.0907dc1930691p-2,0x1.b3a259b49db85p1,3.4033920413889427
+sin,-0x1.ffffffffffffbp-2,0x1.d524fe24f89f1p1,3.665191429188092
+sin,-0x1.6a09e667f3bc9p-1,0x1.f6a7a2955385dp1,3.926990816987241
+sin,-0x1.bb67ae8584ca9p-1,0x1.0c152382d7365p2,4.1887902047863905
+sin,-0x1.ee8dd4748bf15p-1,0x1.1cd675bb04a9cp2,4.4505895925855405
+sin,-0x1.0p0,0x1.2d97c7f3321d2p2,4.71238898038469
+sin,-0x1.ee8dd4748bf16p-1,0x1.3e591a2b5f908p2,4.974188368183839
+sin,-0x1.bb67ae8584caap-1,0x1.4f1a6c638d03fp2,5.235987755982989
+sin,-0x1.6a09e667f3bcep-1,0x1.5fdbbe9bba775p2,5.497787143782138
+sin,-0x1.0000000000004p-1,0x1.709d10d3e7eabp2,5.759586531581287
+sin,-0x1.0907dc193069fp-2,0x1.815e630c155e1p2,6.021385919380436
+sin,-0x1.1a62633145c07p-52,0x1.921fb54442d18p2,6.283185307179586
+sinh,0x1.e2d3246d48e6fp2,0x1.5bf0a8b145769p1,2.718281828459045
+sinh,-0x1.e2d3246d48e6fp2,-0x1.5bf0a8b145769p1,-2.718281828459045
+sinh,0x0.0p0,0x0.0p0,0.0
+sinh,-0x0.0p0,-0x0.0p0,-0.0
+sinh,0x1.2cd9fc44eb982p0,0x1.0p0,1.0
+sinh,-0x1.2cd9fc44eb982p0,-0x1.0p0,-1.0
+sinh,-0x1.0acd00fe63b97p-1,-0x1.0p-1,-0.5
+sinh,0x1.0acd00fe63b97p-1,0x1.0p-1,0.5
+sinh,-0x1.0bbeb1603926ap8,-0x1.921fb54442d18p2,-6.283185307179586
+sinh,-0x1.9c25a07506b44p7,-0x1.815e630c155e1p2,-6.021385919380436
+sinh,-0x1.3d36c80e5d0c7p7,-0x1.709d10d3e7eabp2,-5.759586531581287
+sinh,-0x1.e84b3f43319a6p6,-0x1.5fdbbe9bba775p2,-5.497787143782138
+sinh,-0x1.77d190adc8314p6,-0x1.4f1a6c638d03fp2,-5.235987755982989
+sinh,-0x1.213fbb4f2d33dp6,-0x1.3e591a2b5f908p2,-4.974188368183839
+sinh,-0x1.bd3c34cf00a25p5,-0x1.2d97c7f3321d2p2,-4.71238898038469
+sinh,-0x1.56a9c031162e2p5,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+sinh,-0x1.07b6115af4ac2p5,-0x1.0c152382d7365p2,-4.1887902047863905
+sinh,-0x1.95dfe166e2a9p4,-0x1.f6a7a2955385dp1,-3.926990816987241
+sinh,-0x1.384dda552babdp4,-0x1.d524fe24f89f1p1,-3.665191429188092
+sinh,-0x1.e085bdee107a5p3,-0x1.b3a259b49db85p1,-3.4033920413889427
+sinh,-0x1.718f45d72e672p3,-0x1.921fb54442d18p1,-3.141592653589793
+sinh,-0x1.1c123442e93dep3,-0x1.709d10d3e7eabp1,-2.8797932657906435
+sinh,-0x1.b453f0b1eaf12p2,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+sinh,-0x1.4e97178e396ep2,-0x1.2d97c7f3321d2p1,-2.356194490192345
+sinh,-0x1.ffd51e300fd0ap1,-0x1.0c152382d7365p1,-2.0943951023931953
+sinh,-0x1.85c40e80e851ap1,-0x1.d524fe24f89f1p0,-1.832595714594046
+sinh,-0x1.2690f661dd82p1,-0x1.921fb54442d18p0,-1.5707963267948966
+sinh,-0x1.b757cf1df30a6p0,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+sinh,-0x1.3fd684deb350ep0,-0x1.0c152382d7365p0,-1.0471975511965976
+sinh,-0x1.bcc270b522736p-1,-0x1.921fb54442d18p-1,-0.7853981633974483
+sinh,-0x1.18804022b2bffp-1,-0x1.0c152382d7365p-1,-0.5235987755982988
+sinh,-0x1.0f27ca7619b64p-2,-0x1.0c152382d7365p-2,-0.2617993877991494
+sinh,0x0.0p0,0x0.0p0,0.0
+sinh,0x1.0f27ca7619b64p-2,0x1.0c152382d7365p-2,0.2617993877991494
+sinh,0x1.18804022b2bffp-1,0x1.0c152382d7365p-1,0.5235987755982988
+sinh,0x1.bcc270b522736p-1,0x1.921fb54442d18p-1,0.7853981633974483
+sinh,0x1.3fd684deb350ep0,0x1.0c152382d7365p0,1.0471975511965976
+sinh,0x1.b757cf1df30a6p0,0x1.4f1a6c638d03fp0,1.3089969389957472
+sinh,0x1.2690f661dd82p1,0x1.921fb54442d18p0,1.5707963267948966
+sinh,0x1.85c40e80e851ap1,0x1.d524fe24f89f1p0,1.832595714594046
+sinh,0x1.ffd51e300fd0ap1,0x1.0c152382d7365p1,2.0943951023931953
+sinh,0x1.4e97178e396ep2,0x1.2d97c7f3321d2p1,2.356194490192345
+sinh,0x1.b453f0b1eaf12p2,0x1.4f1a6c638d03fp1,2.6179938779914944
+sinh,0x1.1c123442e93dep3,0x1.709d10d3e7eabp1,2.8797932657906435
+sinh,0x1.718f45d72e672p3,0x1.921fb54442d18p1,3.141592653589793
+sinh,0x1.e085bdee107a5p3,0x1.b3a259b49db85p1,3.4033920413889427
+sinh,0x1.384dda552babdp4,0x1.d524fe24f89f1p1,3.665191429188092
+sinh,0x1.95dfe166e2a9p4,0x1.f6a7a2955385dp1,3.926990816987241
+sinh,0x1.07b6115af4ac2p5,0x1.0c152382d7365p2,4.1887902047863905
+sinh,0x1.56a9c031162e2p5,0x1.1cd675bb04a9cp2,4.4505895925855405
+sinh,0x1.bd3c34cf00a25p5,0x1.2d97c7f3321d2p2,4.71238898038469
+sinh,0x1.213fbb4f2d33dp6,0x1.3e591a2b5f908p2,4.974188368183839
+sinh,0x1.77d190adc8314p6,0x1.4f1a6c638d03fp2,5.235987755982989
+sinh,0x1.e84b3f43319a6p6,0x1.5fdbbe9bba775p2,5.497787143782138
+sinh,0x1.3d36c80e5d0c7p7,0x1.709d10d3e7eabp2,5.759586531581287
+sinh,0x1.9c25a07506b44p7,0x1.815e630c155e1p2,6.021385919380436
+sinh,0x1.0bbeb1603926ap8,0x1.921fb54442d18p2,6.283185307179586
+sqrt,0x1.a61298e1e069cp0,0x1.5bf0a8b145769p1,2.718281828459045
+sqrt,0x0.0p0,0x0.0p0,0.0
+sqrt,-0x0.0p0,-0x0.0p0,-0.0
+sqrt,0x1.0p0,0x1.0p0,1.0
+sqrt,0x1.6a09e667f3bcdp-1,0x1.0p-1,0.5
+sqrt,0x0.0p0,0x0.0p0,0.0
+sqrt,0x1.05f8bd37c0e62p-1,0x1.0c152382d7365p-2,0.2617993877991494
+sqrt,0x1.727bdd17583bbp-1,0x1.0c152382d7365p-1,0.5235987755982988
+sqrt,0x1.c5bf891b4ef6ap-1,0x1.921fb54442d18p-1,0.7853981633974483
+sqrt,0x1.05f8bd37c0e62p0,0x1.0c152382d7365p0,1.0471975511965976
+sqrt,0x1.24e4a86554ee4p0,0x1.4f1a6c638d03fp0,1.3089969389957472
+sqrt,0x1.40d931ff62705p0,0x1.921fb54442d18p0,1.5707963267948966
+sqrt,0x1.5a8e4f8ccf0dcp0,0x1.d524fe24f89f1p0,1.832595714594046
+sqrt,0x1.727bdd17583bbp0,0x1.0c152382d7365p1,2.0943951023931953
+sqrt,0x1.88f51bd3a1593p0,0x1.2d97c7f3321d2p1,2.356194490192345
+sqrt,0x1.9e36a9c593d0bp0,0x1.4f1a6c638d03fp1,2.6179938779914944
+sqrt,0x1.b26e49c64a5f3p0,0x1.709d10d3e7eabp1,2.8797932657906435
+sqrt,0x1.c5bf891b4ef6ap0,0x1.921fb54442d18p1,3.141592653589793
+sqrt,0x1.d846ad8819ddap0,0x1.b3a259b49db85p1,3.4033920413889427
+sqrt,0x1.ea1aa3667d6bep0,0x1.d524fe24f89f1p1,3.665191429188092
+sqrt,0x1.fb4e4f1347eb8p0,0x1.f6a7a2955385dp1,3.926990816987241
+sqrt,0x1.05f8bd37c0e62p1,0x1.0c152382d7365p2,4.1887902047863905
+sqrt,0x1.0e08c0345b894p1,0x1.1cd675bb04a9cp2,4.4505895925855405
+sqrt,0x1.15dce5d1822ccp1,0x1.2d97c7f3321d2p2,4.71238898038469
+sqrt,0x1.1d7a1aea4fad7p1,0x1.3e591a2b5f908p2,4.974188368183839
+sqrt,0x1.24e4a86554ee4p1,0x1.4f1a6c638d03fp2,5.235987755982989
+sqrt,0x1.2c204f9612dc7p1,0x1.5fdbbe9bba775p2,5.497787143782138
+sqrt,0x1.333060993db51p1,0x1.709d10d3e7eabp2,5.759586531581287
+sqrt,0x1.3a17cc297b8dcp1,0x1.815e630c155e1p2,6.021385919380436
+sqrt,0x1.40d931ff62705p1,0x1.921fb54442d18p2,6.283185307179586
+tan,-0x1.cd5cdb683b402p-2,0x1.5bf0a8b145769p1,2.718281828459045
+tan,0x1.cd5cdb683b402p-2,-0x1.5bf0a8b145769p1,-2.718281828459045
+tan,0x0.0p0,0x0.0p0,0.0
+tan,-0x0.0p0,-0x0.0p0,-0.0
+tan,0x1.8eb245cbee3a6p0,0x1.0p0,1.0
+tan,-0x1.8eb245cbee3a6p0,-0x1.0p0,-1.0
+tan,-0x1.17b4f5bf3474ap-1,-0x1.0p-1,-0.5
+tan,0x1.17b4f5bf3474ap-1,0x1.0p-1,0.5
+tan,0x1.1a62633145c07p-52,-0x1.921fb54442d18p2,-6.283185307179586
+tan,0x1.126145e9ecd66p-2,-0x1.815e630c155e1p2,-6.021385919380436
+tan,0x1.279a745903322p-1,-0x1.709d10d3e7eabp2,-5.759586531581287
+tan,0x1.0000000000002p0,-0x1.5fdbbe9bba775p2,-5.497787143782138
+tan,0x1.bb67ae8584ca9p0,-0x1.4f1a6c638d03fp2,-5.235987755982989
+tan,0x1.ddb3d742c2666p1,-0x1.3e591a2b5f908p2,-4.974188368183839
+tan,-0x1.3570efd768923p52,-0x1.2d97c7f3321d2p2,-4.71238898038469
+tan,-0x1.ddb3d742c2659p1,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+tan,-0x1.bb67ae8584ca2p0,-0x1.0c152382d7365p2,-4.1887902047863905
+tan,-0x1.ffffffffffff5p-1,-0x1.f6a7a2955385dp1,-3.926990816987241
+tan,-0x1.279a745903319p-1,-0x1.d524fe24f89f1p1,-3.665191429188092
+tan,-0x1.126145e9ecd56p-2,-0x1.b3a259b49db85p1,-3.4033920413889427
+tan,0x1.1a62633145c07p-53,-0x1.921fb54442d18p1,-3.141592653589793
+tan,0x1.126145e9ecd5bp-2,-0x1.709d10d3e7eabp1,-2.8797932657906435
+tan,0x1.279a74590331cp-1,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+tan,0x1.0000000000001p0,-0x1.2d97c7f3321d2p1,-2.356194490192345
+tan,0x1.bb67ae8584cafp0,-0x1.0c152382d7365p1,-2.0943951023931953
+tan,0x1.ddb3d742c265ap1,-0x1.d524fe24f89f1p0,-1.832595714594046
+tan,-0x1.d02967c31cdb5p53,-0x1.921fb54442d18p0,-1.5707963267948966
+tan,-0x1.ddb3d742c2656p1,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+tan,-0x1.bb67ae8584ca8p0,-0x1.0c152382d7365p0,-1.0471975511965976
+tan,-0x1.fffffffffffffp-1,-0x1.921fb54442d18p-1,-0.7853981633974483
+tan,-0x1.279a74590331cp-1,-0x1.0c152382d7365p-1,-0.5235987755982988
+tan,-0x1.126145e9ecd56p-2,-0x1.0c152382d7365p-2,-0.2617993877991494
+tan,0x0.0p0,0x0.0p0,0.0
+tan,0x1.126145e9ecd56p-2,0x1.0c152382d7365p-2,0.2617993877991494
+tan,0x1.279a74590331cp-1,0x1.0c152382d7365p-1,0.5235987755982988
+tan,0x1.fffffffffffffp-1,0x1.921fb54442d18p-1,0.7853981633974483
+tan,0x1.bb67ae8584ca8p0,0x1.0c152382d7365p0,1.0471975511965976
+tan,0x1.ddb3d742c2656p1,0x1.4f1a6c638d03fp0,1.3089969389957472
+tan,0x1.d02967c31cdb5p53,0x1.921fb54442d18p0,1.5707963267948966
+tan,-0x1.ddb3d742c265ap1,0x1.d524fe24f89f1p0,1.832595714594046
+tan,-0x1.bb67ae8584cafp0,0x1.0c152382d7365p1,2.0943951023931953
+tan,-0x1.0000000000001p0,0x1.2d97c7f3321d2p1,2.356194490192345
+tan,-0x1.279a74590331cp-1,0x1.4f1a6c638d03fp1,2.6179938779914944
+tan,-0x1.126145e9ecd5bp-2,0x1.709d10d3e7eabp1,2.8797932657906435
+tan,-0x1.1a62633145c07p-53,0x1.921fb54442d18p1,3.141592653589793
+tan,0x1.126145e9ecd56p-2,0x1.b3a259b49db85p1,3.4033920413889427
+tan,0x1.279a745903319p-1,0x1.d524fe24f89f1p1,3.665191429188092
+tan,0x1.ffffffffffff5p-1,0x1.f6a7a2955385dp1,3.926990816987241
+tan,0x1.bb67ae8584ca2p0,0x1.0c152382d7365p2,4.1887902047863905
+tan,0x1.ddb3d742c2659p1,0x1.1cd675bb04a9cp2,4.4505895925855405
+tan,0x1.3570efd768923p52,0x1.2d97c7f3321d2p2,4.71238898038469
+tan,-0x1.ddb3d742c2666p1,0x1.3e591a2b5f908p2,4.974188368183839
+tan,-0x1.bb67ae8584ca9p0,0x1.4f1a6c638d03fp2,5.235987755982989
+tan,-0x1.0000000000002p0,0x1.5fdbbe9bba775p2,5.497787143782138
+tan,-0x1.279a745903322p-1,0x1.709d10d3e7eabp2,5.759586531581287
+tan,-0x1.126145e9ecd66p-2,0x1.815e630c155e1p2,6.021385919380436
+tan,-0x1.1a62633145c07p-52,0x1.921fb54442d18p2,6.283185307179586
+tanh,0x1.fb8f76b1e2ab6p-1,0x1.5bf0a8b145769p1,2.718281828459045
+tanh,-0x1.fb8f76b1e2ab6p-1,-0x1.5bf0a8b145769p1,-2.718281828459045
+tanh,0x0.0p0,0x0.0p0,0.0
+tanh,-0x0.0p0,-0x0.0p0,-0.0
+tanh,0x1.85efab514f394p-1,0x1.0p0,1.0
+tanh,-0x1.85efab514f394p-1,-0x1.0p0,-1.0
+tanh,-0x1.d9353d7568af3p-2,-0x1.0p-1,-0.5
+tanh,0x1.d9353d7568af3p-2,0x1.0p-1,0.5
+tanh,-0x1.ffff15f81f9abp-1,-0x1.921fb54442d18p2,-6.283185307179586
+tanh,-0x1.fffe74ef7ed71p-1,-0x1.815e630c155e1p2,-6.021385919380436
+tanh,-0x1.fffd6518fcf42p-1,-0x1.709d10d3e7eabp2,-5.759586531581287
+tanh,-0x1.fffb9a371a4ddp-1,-0x1.5fdbbe9bba775p2,-5.497787143782138
+tanh,-0x1.fff893980bbap-1,-0x1.4f1a6c638d03fp2,-5.235987755982989
+tanh,-0x1.fff37800ab4eep-1,-0x1.3e591a2b5f908p2,-4.974188368183839
+tanh,-0x1.ffead8c8b7e1ep-1,-0x1.2d97c7f3321d2p2,-4.71238898038469
+tanh,-0x1.ffdc4b203d5d5p-1,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+tanh,-0x1.ffc3bacfc46c5p-1,-0x1.0c152382d7365p2,-4.1887902047863905
+tanh,-0x1.ff9a463bc561p-1,-0x1.f6a7a2955385dp1,-3.926990816987241
+tanh,-0x1.ff5452d7bd334p-1,-0x1.d524fe24f89f1p1,-3.665191429188092
+tanh,-0x1.fede53348bdfbp-1,-0x1.b3a259b49db85p1,-3.4033920413889427
+tanh,-0x1.fe175fa29281p-1,-0x1.921fb54442d18p1,-3.141592653589793
+tanh,-0x1.fcc835d71f5fdp-1,-0x1.709d10d3e7eabp1,-2.8797932657906435
+tanh,-0x1.fa945e2f9ed74p-1,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+tanh,-0x1.f6e20cfaf5241p-1,-0x1.2d97c7f3321d2p1,-2.356194490192345
+tanh,-0x1.f0b411c9f4d9fp-1,-0x1.0c152382d7365p1,-2.0943951023931953
+tanh,-0x1.e670ce4d24dc4p-1,-0x1.d524fe24f89f1p0,-1.832595714594046
+tanh,-0x1.d594fdae482bap-1,-0x1.921fb54442d18p0,-1.5707963267948966
+tanh,-0x1.ba6102fbc2ee2p-1,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+tanh,-0x1.8fb9cd6ec42dap-1,-0x1.0c152382d7365p0,-1.0471975511965976
+tanh,-0x1.4fc441fa6d6d6p-1,-0x1.921fb54442d18p-1,-0.7853981633974483
+tanh,-0x1.ec010e53336dap-2,-0x1.0c152382d7365p-1,-0.5235987755982988
+tanh,-0x1.061f0aa540191p-2,-0x1.0c152382d7365p-2,-0.2617993877991494
+tanh,0x0.0p0,0x0.0p0,0.0
+tanh,0x1.061f0aa540191p-2,0x1.0c152382d7365p-2,0.2617993877991494
+tanh,0x1.ec010e53336dap-2,0x1.0c152382d7365p-1,0.5235987755982988
+tanh,0x1.4fc441fa6d6d6p-1,0x1.921fb54442d18p-1,0.7853981633974483
+tanh,0x1.8fb9cd6ec42dap-1,0x1.0c152382d7365p0,1.0471975511965976
+tanh,0x1.ba6102fbc2ee2p-1,0x1.4f1a6c638d03fp0,1.3089969389957472
+tanh,0x1.d594fdae482bap-1,0x1.921fb54442d18p0,1.5707963267948966
+tanh,0x1.e670ce4d24dc4p-1,0x1.d524fe24f89f1p0,1.832595714594046
+tanh,0x1.f0b411c9f4d9fp-1,0x1.0c152382d7365p1,2.0943951023931953
+tanh,0x1.f6e20cfaf5241p-1,0x1.2d97c7f3321d2p1,2.356194490192345
+tanh,0x1.fa945e2f9ed74p-1,0x1.4f1a6c638d03fp1,2.6179938779914944
+tanh,0x1.fcc835d71f5fdp-1,0x1.709d10d3e7eabp1,2.8797932657906435
+tanh,0x1.fe175fa29281p-1,0x1.921fb54442d18p1,3.141592653589793
+tanh,0x1.fede53348bdfbp-1,0x1.b3a259b49db85p1,3.4033920413889427
+tanh,0x1.ff5452d7bd334p-1,0x1.d524fe24f89f1p1,3.665191429188092
+tanh,0x1.ff9a463bc561p-1,0x1.f6a7a2955385dp1,3.926990816987241
+tanh,0x1.ffc3bacfc46c5p-1,0x1.0c152382d7365p2,4.1887902047863905
+tanh,0x1.ffdc4b203d5d5p-1,0x1.1cd675bb04a9cp2,4.4505895925855405
+tanh,0x1.ffead8c8b7e1ep-1,0x1.2d97c7f3321d2p2,4.71238898038469
+tanh,0x1.fff37800ab4eep-1,0x1.3e591a2b5f908p2,4.974188368183839
+tanh,0x1.fff893980bbap-1,0x1.4f1a6c638d03fp2,5.235987755982989
+tanh,0x1.fffb9a371a4ddp-1,0x1.5fdbbe9bba775p2,5.497787143782138
+tanh,0x1.fffd6518fcf42p-1,0x1.709d10d3e7eabp2,5.759586531581287
+tanh,0x1.fffe74ef7ed71p-1,0x1.815e630c155e1p2,6.021385919380436
+tanh,0x1.ffff15f81f9abp-1,0x1.921fb54442d18p2,6.283185307179586
+ceil,0x1.8p1,0x1.5bf0a8b145769p1,2.718281828459045
+ceil,-0x1.0p1,-0x1.5bf0a8b145769p1,-2.718281828459045
+ceil,0x0.0p0,0x0.0p0,0.0
+ceil,-0x0.0p0,-0x0.0p0,-0.0
+ceil,0x1.0p0,0x1.0p0,1.0
+ceil,-0x1.0p0,-0x1.0p0,-1.0
+ceil,-0x0.0p0,-0x1.0p-1,-0.5
+ceil,0x1.0p0,0x1.0p-1,0.5
+ceil,-0x1.8p2,-0x1.921fb54442d18p2,-6.283185307179586
+ceil,-0x1.8p2,-0x1.815e630c155e1p2,-6.021385919380436
+ceil,-0x1.4p2,-0x1.709d10d3e7eabp2,-5.759586531581287
+ceil,-0x1.4p2,-0x1.5fdbbe9bba775p2,-5.497787143782138
+ceil,-0x1.4p2,-0x1.4f1a6c638d03fp2,-5.235987755982989
+ceil,-0x1.0p2,-0x1.3e591a2b5f908p2,-4.974188368183839
+ceil,-0x1.0p2,-0x1.2d97c7f3321d2p2,-4.71238898038469
+ceil,-0x1.0p2,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+ceil,-0x1.0p2,-0x1.0c152382d7365p2,-4.1887902047863905
+ceil,-0x1.8p1,-0x1.f6a7a2955385dp1,-3.926990816987241
+ceil,-0x1.8p1,-0x1.d524fe24f89f1p1,-3.665191429188092
+ceil,-0x1.8p1,-0x1.b3a259b49db85p1,-3.4033920413889427
+ceil,-0x1.8p1,-0x1.921fb54442d18p1,-3.141592653589793
+ceil,-0x1.0p1,-0x1.709d10d3e7eabp1,-2.8797932657906435
+ceil,-0x1.0p1,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+ceil,-0x1.0p1,-0x1.2d97c7f3321d2p1,-2.356194490192345
+ceil,-0x1.0p1,-0x1.0c152382d7365p1,-2.0943951023931953
+ceil,-0x1.0p0,-0x1.d524fe24f89f1p0,-1.832595714594046
+ceil,-0x1.0p0,-0x1.921fb54442d18p0,-1.5707963267948966
+ceil,-0x1.0p0,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+ceil,-0x1.0p0,-0x1.0c152382d7365p0,-1.0471975511965976
+ceil,-0x0.0p0,-0x1.921fb54442d18p-1,-0.7853981633974483
+ceil,-0x0.0p0,-0x1.0c152382d7365p-1,-0.5235987755982988
+ceil,-0x0.0p0,-0x1.0c152382d7365p-2,-0.2617993877991494
+ceil,0x0.0p0,0x0.0p0,0.0
+ceil,0x1.0p0,0x1.0c152382d7365p-2,0.2617993877991494
+ceil,0x1.0p0,0x1.0c152382d7365p-1,0.5235987755982988
+ceil,0x1.0p0,0x1.921fb54442d18p-1,0.7853981633974483
+ceil,0x1.0p1,0x1.0c152382d7365p0,1.0471975511965976
+ceil,0x1.0p1,0x1.4f1a6c638d03fp0,1.3089969389957472
+ceil,0x1.0p1,0x1.921fb54442d18p0,1.5707963267948966
+ceil,0x1.0p1,0x1.d524fe24f89f1p0,1.832595714594046
+ceil,0x1.8p1,0x1.0c152382d7365p1,2.0943951023931953
+ceil,0x1.8p1,0x1.2d97c7f3321d2p1,2.356194490192345
+ceil,0x1.8p1,0x1.4f1a6c638d03fp1,2.6179938779914944
+ceil,0x1.8p1,0x1.709d10d3e7eabp1,2.8797932657906435
+ceil,0x1.0p2,0x1.921fb54442d18p1,3.141592653589793
+ceil,0x1.0p2,0x1.b3a259b49db85p1,3.4033920413889427
+ceil,0x1.0p2,0x1.d524fe24f89f1p1,3.665191429188092
+ceil,0x1.0p2,0x1.f6a7a2955385dp1,3.926990816987241
+ceil,0x1.4p2,0x1.0c152382d7365p2,4.1887902047863905
+ceil,0x1.4p2,0x1.1cd675bb04a9cp2,4.4505895925855405
+ceil,0x1.4p2,0x1.2d97c7f3321d2p2,4.71238898038469
+ceil,0x1.4p2,0x1.3e591a2b5f908p2,4.974188368183839
+ceil,0x1.8p2,0x1.4f1a6c638d03fp2,5.235987755982989
+ceil,0x1.8p2,0x1.5fdbbe9bba775p2,5.497787143782138
+ceil,0x1.8p2,0x1.709d10d3e7eabp2,5.759586531581287
+ceil,0x1.cp2,0x1.815e630c155e1p2,6.021385919380436
+ceil,0x1.cp2,0x1.921fb54442d18p2,6.283185307179586
+floor,0x1.0p1,0x1.5bf0a8b145769p1,2.718281828459045
+floor,-0x1.8p1,-0x1.5bf0a8b145769p1,-2.718281828459045
+floor,0x0.0p0,0x0.0p0,0.0
+floor,-0x0.0p0,-0x0.0p0,-0.0
+floor,0x1.0p0,0x1.0p0,1.0
+floor,-0x1.0p0,-0x1.0p0,-1.0
+floor,-0x1.0p0,-0x1.0p-1,-0.5
+floor,0x0.0p0,0x1.0p-1,0.5
+floor,-0x1.cp2,-0x1.921fb54442d18p2,-6.283185307179586
+floor,-0x1.cp2,-0x1.815e630c155e1p2,-6.021385919380436
+floor,-0x1.8p2,-0x1.709d10d3e7eabp2,-5.759586531581287
+floor,-0x1.8p2,-0x1.5fdbbe9bba775p2,-5.497787143782138
+floor,-0x1.8p2,-0x1.4f1a6c638d03fp2,-5.235987755982989
+floor,-0x1.4p2,-0x1.3e591a2b5f908p2,-4.974188368183839
+floor,-0x1.4p2,-0x1.2d97c7f3321d2p2,-4.71238898038469
+floor,-0x1.4p2,-0x1.1cd675bb04a9cp2,-4.4505895925855405
+floor,-0x1.4p2,-0x1.0c152382d7365p2,-4.1887902047863905
+floor,-0x1.0p2,-0x1.f6a7a2955385dp1,-3.926990816987241
+floor,-0x1.0p2,-0x1.d524fe24f89f1p1,-3.665191429188092
+floor,-0x1.0p2,-0x1.b3a259b49db85p1,-3.4033920413889427
+floor,-0x1.0p2,-0x1.921fb54442d18p1,-3.141592653589793
+floor,-0x1.8p1,-0x1.709d10d3e7eabp1,-2.8797932657906435
+floor,-0x1.8p1,-0x1.4f1a6c638d03fp1,-2.6179938779914944
+floor,-0x1.8p1,-0x1.2d97c7f3321d2p1,-2.356194490192345
+floor,-0x1.8p1,-0x1.0c152382d7365p1,-2.0943951023931953
+floor,-0x1.0p1,-0x1.d524fe24f89f1p0,-1.832595714594046
+floor,-0x1.0p1,-0x1.921fb54442d18p0,-1.5707963267948966
+floor,-0x1.0p1,-0x1.4f1a6c638d03fp0,-1.3089969389957472
+floor,-0x1.0p1,-0x1.0c152382d7365p0,-1.0471975511965976
+floor,-0x1.0p0,-0x1.921fb54442d18p-1,-0.7853981633974483
+floor,-0x1.0p0,-0x1.0c152382d7365p-1,-0.5235987755982988
+floor,-0x1.0p0,-0x1.0c152382d7365p-2,-0.2617993877991494
+floor,0x0.0p0,0x0.0p0,0.0
+floor,0x0.0p0,0x1.0c152382d7365p-2,0.2617993877991494
+floor,0x0.0p0,0x1.0c152382d7365p-1,0.5235987755982988
+floor,0x0.0p0,0x1.921fb54442d18p-1,0.7853981633974483
+floor,0x1.0p0,0x1.0c152382d7365p0,1.0471975511965976
+floor,0x1.0p0,0x1.4f1a6c638d03fp0,1.3089969389957472
+floor,0x1.0p0,0x1.921fb54442d18p0,1.5707963267948966
+floor,0x1.0p0,0x1.d524fe24f89f1p0,1.832595714594046
+floor,0x1.0p1,0x1.0c152382d7365p1,2.0943951023931953
+floor,0x1.0p1,0x1.2d97c7f3321d2p1,2.356194490192345
+floor,0x1.0p1,0x1.4f1a6c638d03fp1,2.6179938779914944
+floor,0x1.0p1,0x1.709d10d3e7eabp1,2.8797932657906435
+floor,0x1.8p1,0x1.921fb54442d18p1,3.141592653589793
+floor,0x1.8p1,0x1.b3a259b49db85p1,3.4033920413889427
+floor,0x1.8p1,0x1.d524fe24f89f1p1,3.665191429188092
+floor,0x1.8p1,0x1.f6a7a2955385dp1,3.926990816987241
+floor,0x1.0p2,0x1.0c152382d7365p2,4.1887902047863905
+floor,0x1.0p2,0x1.1cd675bb04a9cp2,4.4505895925855405
+floor,0x1.0p2,0x1.2d97c7f3321d2p2,4.71238898038469
+floor,0x1.0p2,0x1.3e591a2b5f908p2,4.974188368183839
+floor,0x1.4p2,0x1.4f1a6c638d03fp2,5.235987755982989
+floor,0x1.4p2,0x1.5fdbbe9bba775p2,5.497787143782138
+floor,0x1.4p2,0x1.709d10d3e7eabp2,5.759586531581287
+floor,0x1.8p2,0x1.815e630c155e1p2,6.021385919380436
+floor,0x1.8p2,0x1.921fb54442d18p2,6.283185307179586
diff --git a/luni/src/test/resources/math_java_only.csv b/luni/src/test/resources/math_java_only.csv
new file mode 100644
index 0000000..7497244
--- /dev/null
+++ b/luni/src/test/resources/math_java_only.csv
@@ -0,0 +1,4132 @@
+#These tests are randomly generated.
+#Many of these test functions specific to java.
+cbrt,-0x1.28c16bdbe5b02p341,-0x1.8ec3beb2d4185p1023
+cbrt,-0x1.2e14b2c0fd516p341,-0x1.a49ea827e7d05p1023
+cbrt,-0x1.5e34a2f636f55p340,-0x1.47afe754a89fep1021
+cbrt,-0x1.f8a0db364f2c1p340,-0x1.ea33b08c7fbfbp1022
+cbrt,0x1.13fe315a92f2fp341,0x1.40c8f2c416881p1023
+cbrt,-0x1.f058cbbc49543p340,-0x1.d2762c5e7c22bp1022
+cbrt,0x1.4785ce183fe27p340,0x1.0c0c8b67b7daep1021
+cbrt,-0x1.250fa24b85fe4p341,-0x1.800e50b80ea85p1023
+cbrt,0x1.377220bf3a7dfp340,0x1.ccf6eeb86909cp1020
+cbrt,-0x1.c98f0eb5c5dcbp340,-0x1.6d6d5ccb7231fp1022
+cbrt,0x1.12ca9d6611445p341,0x1.3c9d1f4fb1b51p1023
+cbrt,-0x1.b8ce4aa4646f8p340,-0x1.46bd646b348a7p1022
+cbrt,0x1.39bb533ac53a5p341,0x1.d730774e9d4c9p1023
+cbrt,0x1.3ee216e720331p341,0x1.eec87765e84c1p1023
+cbrt,0x1.4490997193764p340,0x1.04da2953b2f46p1021
+cbrt,0x1.c37cdb4e17ca4p340,0x1.5f12c97e6cc4fp1022
+cbrt,-0x1.d903a0b4c6addp340,-0x1.93b8dc284f903p1022
+cbrt,-0x1.09f259fb99e2ep341,-0x1.1f03b54fdb6b3p1023
+cbrt,-0x1.1aee008eb2a55p341,-0x1.5995eb7752bb1p1023
+cbrt,-0x1.3734bc7ba5d4p340,-0x1.cbe68c7a0015cp1020
+cbrt,0x1.ed248b63d1995p340,0x1.c97c7a91bfb13p1022
+cbrt,-0x1.2fae8e1a994bdp341,-0x1.ab57cf7150fc7p1023
+cbrt,-0x1.e5dfd116468ddp340,-0x1.b58ddd93bfea3p1022
+cbrt,-0x1.3e1eb876a6e8ap341,-0x1.eb3d3b0b459ffp1023
+cbrt,-0x1.0ac38f307f1edp341,-0x1.21ab226ac9ce9p1023
+cbrt,-0x1.fb71e0cc80f22p340,-0x1.f274aa94c0813p1022
+cbrt,0x1.3bad1837822d4p341,0x1.e0012c863f62bp1023
+cbrt,0x1.fe974a28b759ep340,0x1.fbc8d827034c3p1022
+cbrt,0x1.07f5d2281bd68p341,0x1.18a1877e00a5fp1023
+cbrt,-0x1.b6ca6a7542dd8p340,-0x1.424779e743077p1022
+expm1,-0x1.0p0,-0x1.8ec3beb2d4185p1023
+expm1,-0x1.0p0,-0x1.a49ea827e7d05p1023
+expm1,-0x1.0p0,-0x1.47afe754a89fep1021
+expm1,-0x1.0p0,-0x1.ea33b08c7fbfbp1022
+expm1,Infinity,0x1.40c8f2c416881p1023
+expm1,-0x1.0p0,-0x1.d2762c5e7c22bp1022
+expm1,Infinity,0x1.0c0c8b67b7daep1021
+expm1,-0x1.0p0,-0x1.800e50b80ea85p1023
+expm1,Infinity,0x1.ccf6eeb86909cp1020
+expm1,-0x1.0p0,-0x1.6d6d5ccb7231fp1022
+expm1,Infinity,0x1.3c9d1f4fb1b51p1023
+expm1,-0x1.0p0,-0x1.46bd646b348a7p1022
+expm1,Infinity,0x1.d730774e9d4c9p1023
+expm1,Infinity,0x1.eec87765e84c1p1023
+expm1,Infinity,0x1.04da2953b2f46p1021
+expm1,Infinity,0x1.5f12c97e6cc4fp1022
+expm1,-0x1.0p0,-0x1.93b8dc284f903p1022
+expm1,-0x1.0p0,-0x1.1f03b54fdb6b3p1023
+expm1,-0x1.0p0,-0x1.5995eb7752bb1p1023
+expm1,-0x1.0p0,-0x1.cbe68c7a0015cp1020
+expm1,Infinity,0x1.c97c7a91bfb13p1022
+expm1,-0x1.0p0,-0x1.ab57cf7150fc7p1023
+expm1,-0x1.0p0,-0x1.b58ddd93bfea3p1022
+expm1,-0x1.0p0,-0x1.eb3d3b0b459ffp1023
+expm1,-0x1.0p0,-0x1.21ab226ac9ce9p1023
+expm1,-0x1.0p0,-0x1.f274aa94c0813p1022
+expm1,Infinity,0x1.e0012c863f62bp1023
+expm1,Infinity,0x1.fbc8d827034c3p1022
+expm1,Infinity,0x1.18a1877e00a5fp1023
+expm1,-0x1.0p0,-0x1.424779e743077p1022
+getExponent,0x1.ff8p9,-0x1.8ec3beb2d4185p1023
+getExponent,0x1.ff8p9,-0x1.a49ea827e7d05p1023
+getExponent,0x1.fe8p9,-0x1.47afe754a89fep1021
+getExponent,0x1.ffp9,-0x1.ea33b08c7fbfbp1022
+getExponent,0x1.ff8p9,0x1.40c8f2c416881p1023
+getExponent,0x1.ffp9,-0x1.d2762c5e7c22bp1022
+getExponent,0x1.fe8p9,0x1.0c0c8b67b7daep1021
+getExponent,0x1.ff8p9,-0x1.800e50b80ea85p1023
+getExponent,0x1.fep9,0x1.ccf6eeb86909cp1020
+getExponent,0x1.ffp9,-0x1.6d6d5ccb7231fp1022
+getExponent,0x1.ff8p9,0x1.3c9d1f4fb1b51p1023
+getExponent,0x1.ffp9,-0x1.46bd646b348a7p1022
+getExponent,0x1.ff8p9,0x1.d730774e9d4c9p1023
+getExponent,0x1.ff8p9,0x1.eec87765e84c1p1023
+getExponent,0x1.fe8p9,0x1.04da2953b2f46p1021
+getExponent,0x1.ffp9,0x1.5f12c97e6cc4fp1022
+getExponent,0x1.ffp9,-0x1.93b8dc284f903p1022
+getExponent,0x1.ff8p9,-0x1.1f03b54fdb6b3p1023
+getExponent,0x1.ff8p9,-0x1.5995eb7752bb1p1023
+getExponent,0x1.fep9,-0x1.cbe68c7a0015cp1020
+getExponent,0x1.ffp9,0x1.c97c7a91bfb13p1022
+getExponent,0x1.ff8p9,-0x1.ab57cf7150fc7p1023
+getExponent,0x1.ffp9,-0x1.b58ddd93bfea3p1022
+getExponent,0x1.ff8p9,-0x1.eb3d3b0b459ffp1023
+getExponent,0x1.ff8p9,-0x1.21ab226ac9ce9p1023
+getExponent,0x1.ffp9,-0x1.f274aa94c0813p1022
+getExponent,0x1.ff8p9,0x1.e0012c863f62bp1023
+getExponent,0x1.ffp9,0x1.fbc8d827034c3p1022
+getExponent,0x1.ff8p9,0x1.18a1877e00a5fp1023
+getExponent,0x1.ffp9,-0x1.424779e743077p1022
+log1p,NaN,-0x1.8ec3beb2d4185p1023
+log1p,NaN,-0x1.a49ea827e7d05p1023
+log1p,NaN,-0x1.47afe754a89fep1021
+log1p,NaN,-0x1.ea33b08c7fbfbp1022
+log1p,0x1.62a857235842dp9,0x1.40c8f2c416881p1023
+log1p,NaN,-0x1.d2762c5e7c22bp1022
+log1p,0x1.61dfe7df97bep9,0x1.0c0c8b67b7daep1021
+log1p,NaN,-0x1.800e50b80ea85p1023
+log1p,0x1.61cc940b2d36ap9,0x1.ccf6eeb86909cp1020
+log1p,NaN,-0x1.6d6d5ccb7231fp1022
+log1p,0x1.62a6aa4225779p9,0x1.3c9d1f4fb1b51p1023
+log1p,NaN,-0x1.46bd646b348a7p1022
+log1p,0x1.62d98e12c9f96p9,0x1.d730774e9d4c9p1023
+log1p,0x1.62dfcf19a6049p9,0x1.eec87765e84c1p1023
+log1p,0x1.61dc6c10526cfp9,0x1.04da2953b2f46p1021
+log1p,0x1.625b2a8fb49e6p9,0x1.5f12c97e6cc4fp1022
+log1p,NaN,-0x1.93b8dc284f903p1022
+log1p,NaN,-0x1.1f03b54fdb6b3p1023
+log1p,NaN,-0x1.5995eb7752bb1p1023
+log1p,NaN,-0x1.cbe68c7a0015cp1020
+log1p,0x1.627d0df092aa8p9,0x1.c97c7a91bfb13p1022
+log1p,NaN,-0x1.ab57cf7150fc7p1023
+log1p,NaN,-0x1.b58ddd93bfea3p1022
+log1p,NaN,-0x1.eb3d3b0b459ffp1023
+log1p,NaN,-0x1.21ab226ac9ce9p1023
+log1p,NaN,-0x1.f274aa94c0813p1022
+log1p,0x1.62dbed736c836p9,0x1.e0012c863f62bp1023
+log1p,0x1.628a67fbcd68fp9,0x1.fbc8d827034c3p1022
+log1p,0x1.6297390f32c3p9,0x1.18a1877e00a5fp1023
+log1p,NaN,-0x1.424779e743077p1022
+nextUp,-0x1.8ec3beb2d4184p1023,-0x1.8ec3beb2d4185p1023
+nextUp,-0x1.a49ea827e7d04p1023,-0x1.a49ea827e7d05p1023
+nextUp,-0x1.47afe754a89fdp1021,-0x1.47afe754a89fep1021
+nextUp,-0x1.ea33b08c7fbfap1022,-0x1.ea33b08c7fbfbp1022
+nextUp,0x1.40c8f2c416882p1023,0x1.40c8f2c416881p1023
+nextUp,-0x1.d2762c5e7c22ap1022,-0x1.d2762c5e7c22bp1022
+nextUp,0x1.0c0c8b67b7dafp1021,0x1.0c0c8b67b7daep1021
+nextUp,-0x1.800e50b80ea84p1023,-0x1.800e50b80ea85p1023
+nextUp,0x1.ccf6eeb86909dp1020,0x1.ccf6eeb86909cp1020
+nextUp,-0x1.6d6d5ccb7231ep1022,-0x1.6d6d5ccb7231fp1022
+nextUp,0x1.3c9d1f4fb1b52p1023,0x1.3c9d1f4fb1b51p1023
+nextUp,-0x1.46bd646b348a6p1022,-0x1.46bd646b348a7p1022
+nextUp,0x1.d730774e9d4cap1023,0x1.d730774e9d4c9p1023
+nextUp,0x1.eec87765e84c2p1023,0x1.eec87765e84c1p1023
+nextUp,0x1.04da2953b2f47p1021,0x1.04da2953b2f46p1021
+nextUp,0x1.5f12c97e6cc5p1022,0x1.5f12c97e6cc4fp1022
+nextUp,-0x1.93b8dc284f902p1022,-0x1.93b8dc284f903p1022
+nextUp,-0x1.1f03b54fdb6b2p1023,-0x1.1f03b54fdb6b3p1023
+nextUp,-0x1.5995eb7752bbp1023,-0x1.5995eb7752bb1p1023
+nextUp,-0x1.cbe68c7a0015bp1020,-0x1.cbe68c7a0015cp1020
+nextUp,0x1.c97c7a91bfb14p1022,0x1.c97c7a91bfb13p1022
+nextUp,-0x1.ab57cf7150fc6p1023,-0x1.ab57cf7150fc7p1023
+nextUp,-0x1.b58ddd93bfea2p1022,-0x1.b58ddd93bfea3p1022
+nextUp,-0x1.eb3d3b0b459fep1023,-0x1.eb3d3b0b459ffp1023
+nextUp,-0x1.21ab226ac9ce8p1023,-0x1.21ab226ac9ce9p1023
+nextUp,-0x1.f274aa94c0812p1022,-0x1.f274aa94c0813p1022
+nextUp,0x1.e0012c863f62cp1023,0x1.e0012c863f62bp1023
+nextUp,0x1.fbc8d827034c4p1022,0x1.fbc8d827034c3p1022
+nextUp,0x1.18a1877e00a6p1023,0x1.18a1877e00a5fp1023
+nextUp,-0x1.424779e743076p1022,-0x1.424779e743077p1022
+rint,-0x1.8ec3beb2d4185p1023,-0x1.8ec3beb2d4185p1023
+rint,-0x1.a49ea827e7d05p1023,-0x1.a49ea827e7d05p1023
+rint,-0x1.47afe754a89fep1021,-0x1.47afe754a89fep1021
+rint,-0x1.ea33b08c7fbfbp1022,-0x1.ea33b08c7fbfbp1022
+rint,0x1.40c8f2c416881p1023,0x1.40c8f2c416881p1023
+rint,-0x1.d2762c5e7c22bp1022,-0x1.d2762c5e7c22bp1022
+rint,0x1.0c0c8b67b7daep1021,0x1.0c0c8b67b7daep1021
+rint,-0x1.800e50b80ea85p1023,-0x1.800e50b80ea85p1023
+rint,0x1.ccf6eeb86909cp1020,0x1.ccf6eeb86909cp1020
+rint,-0x1.6d6d5ccb7231fp1022,-0x1.6d6d5ccb7231fp1022
+rint,0x1.3c9d1f4fb1b51p1023,0x1.3c9d1f4fb1b51p1023
+rint,-0x1.46bd646b348a7p1022,-0x1.46bd646b348a7p1022
+rint,0x1.d730774e9d4c9p1023,0x1.d730774e9d4c9p1023
+rint,0x1.eec87765e84c1p1023,0x1.eec87765e84c1p1023
+rint,0x1.04da2953b2f46p1021,0x1.04da2953b2f46p1021
+rint,0x1.5f12c97e6cc4fp1022,0x1.5f12c97e6cc4fp1022
+rint,-0x1.93b8dc284f903p1022,-0x1.93b8dc284f903p1022
+rint,-0x1.1f03b54fdb6b3p1023,-0x1.1f03b54fdb6b3p1023
+rint,-0x1.5995eb7752bb1p1023,-0x1.5995eb7752bb1p1023
+rint,-0x1.cbe68c7a0015cp1020,-0x1.cbe68c7a0015cp1020
+rint,0x1.c97c7a91bfb13p1022,0x1.c97c7a91bfb13p1022
+rint,-0x1.ab57cf7150fc7p1023,-0x1.ab57cf7150fc7p1023
+rint,-0x1.b58ddd93bfea3p1022,-0x1.b58ddd93bfea3p1022
+rint,-0x1.eb3d3b0b459ffp1023,-0x1.eb3d3b0b459ffp1023
+rint,-0x1.21ab226ac9ce9p1023,-0x1.21ab226ac9ce9p1023
+rint,-0x1.f274aa94c0813p1022,-0x1.f274aa94c0813p1022
+rint,0x1.e0012c863f62bp1023,0x1.e0012c863f62bp1023
+rint,0x1.fbc8d827034c3p1022,0x1.fbc8d827034c3p1022
+rint,0x1.18a1877e00a5fp1023,0x1.18a1877e00a5fp1023
+rint,-0x1.424779e743077p1022,-0x1.424779e743077p1022
+signum,-0x1.0p0,-0x1.8ec3beb2d4185p1023
+signum,-0x1.0p0,-0x1.a49ea827e7d05p1023
+signum,-0x1.0p0,-0x1.47afe754a89fep1021
+signum,-0x1.0p0,-0x1.ea33b08c7fbfbp1022
+signum,0x1.0p0,0x1.40c8f2c416881p1023
+signum,-0x1.0p0,-0x1.d2762c5e7c22bp1022
+signum,0x1.0p0,0x1.0c0c8b67b7daep1021
+signum,-0x1.0p0,-0x1.800e50b80ea85p1023
+signum,0x1.0p0,0x1.ccf6eeb86909cp1020
+signum,-0x1.0p0,-0x1.6d6d5ccb7231fp1022
+signum,0x1.0p0,0x1.3c9d1f4fb1b51p1023
+signum,-0x1.0p0,-0x1.46bd646b348a7p1022
+signum,0x1.0p0,0x1.d730774e9d4c9p1023
+signum,0x1.0p0,0x1.eec87765e84c1p1023
+signum,0x1.0p0,0x1.04da2953b2f46p1021
+signum,0x1.0p0,0x1.5f12c97e6cc4fp1022
+signum,-0x1.0p0,-0x1.93b8dc284f903p1022
+signum,-0x1.0p0,-0x1.1f03b54fdb6b3p1023
+signum,-0x1.0p0,-0x1.5995eb7752bb1p1023
+signum,-0x1.0p0,-0x1.cbe68c7a0015cp1020
+signum,0x1.0p0,0x1.c97c7a91bfb13p1022
+signum,-0x1.0p0,-0x1.ab57cf7150fc7p1023
+signum,-0x1.0p0,-0x1.b58ddd93bfea3p1022
+signum,-0x1.0p0,-0x1.eb3d3b0b459ffp1023
+signum,-0x1.0p0,-0x1.21ab226ac9ce9p1023
+signum,-0x1.0p0,-0x1.f274aa94c0813p1022
+signum,0x1.0p0,0x1.e0012c863f62bp1023
+signum,0x1.0p0,0x1.fbc8d827034c3p1022
+signum,0x1.0p0,0x1.18a1877e00a5fp1023
+signum,-0x1.0p0,-0x1.424779e743077p1022
+toDegrees,-Infinity,-0x1.8ec3beb2d4185p1023
+toDegrees,-Infinity,-0x1.a49ea827e7d05p1023
+toDegrees,-Infinity,-0x1.47afe754a89fep1021
+toDegrees,-Infinity,-0x1.ea33b08c7fbfbp1022
+toDegrees,Infinity,0x1.40c8f2c416881p1023
+toDegrees,-Infinity,-0x1.d2762c5e7c22bp1022
+toDegrees,Infinity,0x1.0c0c8b67b7daep1021
+toDegrees,-Infinity,-0x1.800e50b80ea85p1023
+toDegrees,Infinity,0x1.ccf6eeb86909cp1020
+toDegrees,-Infinity,-0x1.6d6d5ccb7231fp1022
+toDegrees,Infinity,0x1.3c9d1f4fb1b51p1023
+toDegrees,-Infinity,-0x1.46bd646b348a7p1022
+toDegrees,Infinity,0x1.d730774e9d4c9p1023
+toDegrees,Infinity,0x1.eec87765e84c1p1023
+toDegrees,Infinity,0x1.04da2953b2f46p1021
+toDegrees,Infinity,0x1.5f12c97e6cc4fp1022
+toDegrees,-Infinity,-0x1.93b8dc284f903p1022
+toDegrees,-Infinity,-0x1.1f03b54fdb6b3p1023
+toDegrees,-Infinity,-0x1.5995eb7752bb1p1023
+toDegrees,-Infinity,-0x1.cbe68c7a0015cp1020
+toDegrees,Infinity,0x1.c97c7a91bfb13p1022
+toDegrees,-Infinity,-0x1.ab57cf7150fc7p1023
+toDegrees,-Infinity,-0x1.b58ddd93bfea3p1022
+toDegrees,-Infinity,-0x1.eb3d3b0b459ffp1023
+toDegrees,-Infinity,-0x1.21ab226ac9ce9p1023
+toDegrees,-Infinity,-0x1.f274aa94c0813p1022
+toDegrees,Infinity,0x1.e0012c863f62bp1023
+toDegrees,Infinity,0x1.fbc8d827034c3p1022
+toDegrees,Infinity,0x1.18a1877e00a5fp1023
+toDegrees,-Infinity,-0x1.424779e743077p1022
+toRadians,-0x1.bd6ca335c8f8bp1017,-0x1.8ec3beb2d4185p1023
+toRadians,-0x1.d5d636d37463cp1017,-0x1.a49ea827e7d05p1023
+toRadians,-0x1.6e07b010242a3p1015,-0x1.47afe754a89fep1021
+toRadians,-0x1.11c7c808a0662p1017,-0x1.ea33b08c7fbfbp1022
+toRadians,0x1.6651facd75f48p1017,0x1.40c8f2c416881p1023
+toRadians,-0x1.048574b80ff57p1017,-0x1.d2762c5e7c22bp1022
+toRadians,0x1.2b69e24b71de8p1015,0x1.0c0c8b67b7daep1021
+toRadians,-0x1.acfe9cbf85fcep1017,-0x1.800e50b80ea85p1023
+toRadians,0x1.0173811fff46ap1015,0x1.ccf6eeb86909cp1020
+toRadians,-0x1.982fa40f44f9ap1016,-0x1.6d6d5ccb7231fp1022
+toRadians,0x1.61a934e496335p1017,0x1.3c9d1f4fb1b51p1023
+toRadians,-0x1.6cf8ccc8ea027p1016,-0x1.46bd646b348a7p1022
+toRadians,0x1.072969315a381p1018,0x1.d730774e9d4c9p1023
+toRadians,0x1.1456c8928aff4p1018,0x1.eec87765e84c1p1023
+toRadians,0x1.235fec19c543cp1015,0x1.04da2953b2f46p1021
+toRadians,0x1.882719ca8a188p1016,0x1.5f12c97e6cc4fp1022
+toRadians,-0x1.c2f640afddd61p1016,-0x1.93b8dc284f903p1022
+toRadians,-0x1.40992763eae48p1017,-0x1.1f03b54fdb6b3p1023
+toRadians,-0x1.8205d95283762p1017,-0x1.5995eb7752bb1p1023
+toRadians,-0x1.00db6068f8009p1015,-0x1.cbe68c7a0015cp1020
+toRadians,0x1.ff045cc909d01p1016,0x1.c97c7a91bfb13p1022
+toRadians,-0x1.dd58c2d344925p1017,-0x1.ab57cf7150fc7p1023
+toRadians,-0x1.e8c0b050f0382p1016,-0x1.b58ddd93bfea3p1022
+toRadians,-0x1.125c16633ee83p1018,-0x1.eb3d3b0b459ffp1023
+toRadians,-0x1.4390148899c34p1017,-0x1.21ab226ac9ce9p1023
+toRadians,-0x1.1663e3e36d831p1017,-0x1.f274aa94c0813p1022
+toRadians,0x1.0c15cb5b07c69p1018,0x1.e0012c863f62bp1023
+toRadians,0x1.1b99b34e2a2c9p1017,0x1.fbc8d827034c3p1022
+toRadians,0x1.3977c2280a1dep1017,0x1.18a1877e00a5fp1023
+toRadians,-0x1.67fd447707815p1016,-0x1.424779e743077p1022
+ulp,0x1.0p971,-0x1.8ec3beb2d4185p1023
+ulp,0x1.0p971,-0x1.a49ea827e7d05p1023
+ulp,0x1.0p969,-0x1.47afe754a89fep1021
+ulp,0x1.0p970,-0x1.ea33b08c7fbfbp1022
+ulp,0x1.0p971,0x1.40c8f2c416881p1023
+ulp,0x1.0p970,-0x1.d2762c5e7c22bp1022
+ulp,0x1.0p969,0x1.0c0c8b67b7daep1021
+ulp,0x1.0p971,-0x1.800e50b80ea85p1023
+ulp,0x1.0p968,0x1.ccf6eeb86909cp1020
+ulp,0x1.0p970,-0x1.6d6d5ccb7231fp1022
+ulp,0x1.0p971,0x1.3c9d1f4fb1b51p1023
+ulp,0x1.0p970,-0x1.46bd646b348a7p1022
+ulp,0x1.0p971,0x1.d730774e9d4c9p1023
+ulp,0x1.0p971,0x1.eec87765e84c1p1023
+ulp,0x1.0p969,0x1.04da2953b2f46p1021
+ulp,0x1.0p970,0x1.5f12c97e6cc4fp1022
+ulp,0x1.0p970,-0x1.93b8dc284f903p1022
+ulp,0x1.0p971,-0x1.1f03b54fdb6b3p1023
+ulp,0x1.0p971,-0x1.5995eb7752bb1p1023
+ulp,0x1.0p968,-0x1.cbe68c7a0015cp1020
+ulp,0x1.0p970,0x1.c97c7a91bfb13p1022
+ulp,0x1.0p971,-0x1.ab57cf7150fc7p1023
+ulp,0x1.0p970,-0x1.b58ddd93bfea3p1022
+ulp,0x1.0p971,-0x1.eb3d3b0b459ffp1023
+ulp,0x1.0p971,-0x1.21ab226ac9ce9p1023
+ulp,0x1.0p970,-0x1.f274aa94c0813p1022
+ulp,0x1.0p971,0x1.e0012c863f62bp1023
+ulp,0x1.0p970,0x1.fbc8d827034c3p1022
+ulp,0x1.0p971,0x1.18a1877e00a5fp1023
+ulp,0x1.0p970,-0x1.424779e743077p1022
+nextUp,-0x1.8ec3beb2d4184p1023,-0x1.8ec3beb2d4185p1023
+nextUp,-0x1.a49ea827e7d04p1023,-0x1.a49ea827e7d05p1023
+nextUp,-0x1.47afe754a89fdp1021,-0x1.47afe754a89fep1021
+nextUp,-0x1.ea33b08c7fbfap1022,-0x1.ea33b08c7fbfbp1022
+nextUp,0x1.40c8f2c416882p1023,0x1.40c8f2c416881p1023
+nextUp,-0x1.d2762c5e7c22ap1022,-0x1.d2762c5e7c22bp1022
+nextUp,0x1.0c0c8b67b7dafp1021,0x1.0c0c8b67b7daep1021
+nextUp,-0x1.800e50b80ea84p1023,-0x1.800e50b80ea85p1023
+nextUp,0x1.ccf6eeb86909dp1020,0x1.ccf6eeb86909cp1020
+nextUp,-0x1.6d6d5ccb7231ep1022,-0x1.6d6d5ccb7231fp1022
+nextUp,0x1.3c9d1f4fb1b52p1023,0x1.3c9d1f4fb1b51p1023
+nextUp,-0x1.46bd646b348a6p1022,-0x1.46bd646b348a7p1022
+nextUp,0x1.d730774e9d4cap1023,0x1.d730774e9d4c9p1023
+nextUp,0x1.eec87765e84c2p1023,0x1.eec87765e84c1p1023
+nextUp,0x1.04da2953b2f47p1021,0x1.04da2953b2f46p1021
+nextUp,0x1.5f12c97e6cc5p1022,0x1.5f12c97e6cc4fp1022
+nextUp,-0x1.93b8dc284f902p1022,-0x1.93b8dc284f903p1022
+nextUp,-0x1.1f03b54fdb6b2p1023,-0x1.1f03b54fdb6b3p1023
+nextUp,-0x1.5995eb7752bbp1023,-0x1.5995eb7752bb1p1023
+nextUp,-0x1.cbe68c7a0015bp1020,-0x1.cbe68c7a0015cp1020
+nextUp,0x1.c97c7a91bfb14p1022,0x1.c97c7a91bfb13p1022
+nextUp,-0x1.ab57cf7150fc6p1023,-0x1.ab57cf7150fc7p1023
+nextUp,-0x1.b58ddd93bfea2p1022,-0x1.b58ddd93bfea3p1022
+nextUp,-0x1.eb3d3b0b459fep1023,-0x1.eb3d3b0b459ffp1023
+nextUp,-0x1.21ab226ac9ce8p1023,-0x1.21ab226ac9ce9p1023
+nextUp,-0x1.f274aa94c0812p1022,-0x1.f274aa94c0813p1022
+nextUp,0x1.e0012c863f62cp1023,0x1.e0012c863f62bp1023
+nextUp,0x1.fbc8d827034c4p1022,0x1.fbc8d827034c3p1022
+nextUp,0x1.18a1877e00a6p1023,0x1.18a1877e00a5fp1023
+nextUp,-0x1.424779e743076p1022,-0x1.424779e743077p1022
+expm1,-0x1.9cce617760b86p-1,-0x1.a428e298f71edp0
+expm1,-0x1.c31b9fecb2667p-1,-0x1.108a530fc0d2p1
+expm1,0x1.d84cfb46444c3p1,0x1.8b9f5d1de5c3dp0
+expm1,-0x1.be3c4e9d3d4bp-1,-0x1.06affbb00d98fp1
+expm1,0x1.488d1a8fb117fp-1,0x1.fba17da5f8b4p-2
+expm1,0x1.4f362dab45f2cp-2,0x1.21fc1ec020265p-2
+expm1,-0x1.f6037ebeb4cc2p-1,-0x1.f7f314af56e93p1
+expm1,0x1.8c60ee23a58bdp0,0x1.def2ff6a5a047p-1
+expm1,0x1.2fb26016d86a5p-3,0x1.1b2f14c6ae1c5p-3
+expm1,0x1.17a5f93a6bfb8p0,0x1.7a0282d891ad3p-1
+expm1,0x1.113b136256129p-2,0x1.e4622024c81ebp-3
+expm1,0x1.7ff45eaad7988p24,0x1.10a770e97d9e7p4
+expm1,0x1.8a9d18e586db4p-2,0x1.4dc9651946b7ap-2
+expm1,0x1.3dc4de5d5ab42p-1,0x1.ee6915f64a79cp-2
+expm1,0x1.2a8d7c3f893fdp1,0x1.34260cf244cdp0
+expm1,0x1.6ab8fa5d2e61p1,0x1.5806777a3c3p0
+expm1,-0x1.79481038a9e3ep-5,-0x1.823ee1dc7fe48p-5
+expm1,0x1.555c872c09367p-3,0x1.3bb984b9c4954p-3
+expm1,0x1.0407e741c6d8ep-2,0x1.cf6feff705532p-3
+expm1,-0x1.08bae127926d4p-1,-0x1.74a7eff601cdcp-1
+expm1,0x1.50a2c9ded20fep23,0x1.0375984fb2281p4
+expm1,0x1.f6f4625d227dfp4,0x1.bd5755943de38p1
+expm1,0x1.d1d886cfed521p0,0x1.0960da57be582p0
+expm1,0x1.7fb6c0fe4b3f4p-3,0x1.5fb557ca64795p-3
+expm1,-0x1.e71cda74e9a52p-3,-0x1.1620bd9fc350fp-2
+expm1,-0x1.8e3322ce2ba4dp-1,-0x1.80fe46017449cp0
+expm1,-0x1.498d5bb3c3d3fp-1,-0x1.0828010a23fap0
+expm1,0x1.67234fceaea03p-1,0x1.101d9566db9cdp-1
+expm1,-0x1.db7e672db7ed9p-1,-0x1.520717e55c7cep1
+expm1,0x1.675c1aa18e11p3,0x1.407f835a98e74p1
+expm1,-0x1.6fb54f7ee5624p-2,-0x1.c78b0c72df77bp-2
+expm1,-0x1.ef6a015b45da5p-1,-0x1.b702b9b97b225p1
+expm1,0x1.fd8f7e7d22f9fp12,0x1.2033482ef147cp3
+expm1,0x1.347088405765ep-3,0x1.1f4f60b28d4b2p-3
+expm1,-0x1.91c228406494ep-1,-0x1.892064e9fbe38p0
+expm1,-0x1.c378b0f9be9ebp-1,-0x1.114e8b4e47b56p1
+expm1,0x1.0c37fefe1bd74p-1,0x1.af5c13c6cc9dp-2
+expm1,0x1.28663408d756bp-5,0x1.2329bed5f8384p-5
+expm1,0x1.89088de6f271ep-5,0x1.7fe5679450e6cp-5
+expm1,-0x1.6b946b2a63306p-1,-0x1.3cffb74d9883ap0
+expm1,0x1.65198db542bp3,0x1.3fc1bdbc5959bp1
+expm1,0x1.b4d62828103c6p0,0x1.fdc177ce6b2fp-1
+expm1,-0x1.a933d54962e62p-1,-0x1.c655c955055a4p0
+expm1,-0x1.4d9b515febaf6p-1,-0x1.0de8d59773e34p0
+expm1,0x1.1c1cfbfabe627p0,0x1.7e4287e158391p-1
+expm1,-0x1.783de8234820fp-1,-0x1.53d3b9e746ce5p0
+expm1,0x1.8782f9dfef649p25,0x1.1c0e68278cbe8p4
+expm1,-0x1.2c4d9740abd87p-1,-0x1.c42ebb78fbe73p-1
+expm1,0x1.45891e11d7d3ep0,0x1.a417e40cf4b43p-1
+expm1,0x1.50d809895a98ep24,0x1.0e8f417663934p4
+expm1,-0x1.ac7b2ffccc578p-4,-0x1.c496f63767e31p-4
+expm1,0x1.23f9698df255ep1,0x1.302b763fe6981p0
+expm1,-0x1.372fb3a1c8b16p-1,-0x1.df34782f9a1a5p-1
+expm1,0x1.31989d562b56ep3,0x1.2d95289794af2p1
+expm1,0x1.1a5b54e16683ap-1,0x1.c1bfc1f99f2e4p-2
+expm1,0x1.24deab3524f3bp0,0x1.867e7e0cc218ep-1
+expm1,0x1.4a933382051b6p0,0x1.a882d2b39ac55p-1
+expm1,-0x1.205716f69f914p-1,-0x1.a809a09f4f09bp-1
+expm1,0x1.59caf3c696abcp4,0x1.8f2a729c39e94p1
+expm1,0x1.e4d273a09d1f6p1,0x1.90e848d448a5cp0
+expm1,0x1.8e9c29fbb3306p-2,0x1.50aad6a5c5abp-2
+expm1,0x1.0ff80a690234ep-1,0x1.b4451257c6c54p-2
+expm1,0x1.0a404fd922ddp7,0x1.39858ee3507c2p2
+expm1,0x1.85a6937fa51d4p-6,0x1.8116e6578fb2dp-6
+expm1,-0x1.3afb4d3f1fe44p-1,-0x1.e8f9655fdf834p-1
+expm1,0x1.9e3df7b42b57bp4,0x1.a5585e10e1aa9p1
+expm1,-0x1.694462acf4144p-2,-0x1.bd8acde22cb7ap-2
+expm1,0x1.f89157586270bp0,0x1.16c158baaac49p0
+expm1,0x1.c988d67b49f5p-3,0x1.9cf4962ba6c93p-3
+expm1,0x1.6912956ef46f2p1,0x1.5729bdac949ffp0
+expm1,0x1.976bd3c015fd5p0,0x1.e78b094b3102ap-1
+expm1,0x1.8ff8984c9a5e9p3,0x1.4d22bdcf14f59p1
+expm1,0x1.20d1be1acf74ap0,0x1.82b3a24c13b11p-1
+expm1,-0x1.d693360e8c6aep-1,-0x1.41d934d83ecacp1
+expm1,0x1.ef46f146273dap0,0x1.139bdec0344acp0
+expm1,0x1.6f6a2734bc0cp-3,0x1.51ef54872e016p-3
+expm1,0x1.6d57ad055f3aap-4,0x1.5df51d8826a33p-4
+expm1,-0x1.21951d9534acfp-1,-0x1.aae3adbfd838dp-1
+expm1,0x1.24a9441e3b6b6p1,0x1.3096916641fcdp0
+expm1,-0x1.11ec382c1c485p-1,-0x1.880dad5ffc433p-1
+expm1,-0x1.2cf8056959716p-1,-0x1.c5cb938de2e43p-1
+expm1,0x1.e78acec13ab66p-3,0x1.b5567396909d5p-3
+expm1,0x1.0acdf96f8a344p1,0x1.20592c22f0e12p0
+expm1,0x1.0aae10d4f76f2p0,0x1.6d7620cd67311p-1
+expm1,-0x1.fff141245875cp-1,-0x1.22f64374a5fefp3
+expm1,-0x1.704270d7d5b56p-2,-0x1.c8675818dde29p-2
+expm1,0x1.0ea5330cfe07cp8,0x1.66b0150f95df3p2
+expm1,-0x1.110b939bd2f2cp-1,-0x1.862b74fd88896p-1
+expm1,-0x1.6d35632ffa269p-1,-0x1.3fd2e487b56e7p0
+expm1,-0x1.dfa7e2e9baa38p-2,-0x1.438717b32225cp-1
+expm1,0x1.70d19617dce74p-4,0x1.6125d50ed9678p-4
+expm1,-0x1.7580ffd64dce4p-1,-0x1.4eb72c14c261fp0
+expm1,0x1.24db28dd6a517p1,0x1.30b4eca7db93dp0
+expm1,-0x1.21e6aac0620bcp-2,-0x1.54d0dac99524ep-2
+expm1,-0x1.bfe1f0bc058ccp-1,-0x1.09ef1385af04ep1
+expm1,-0x1.fbfdbe07160d3p-1,-0x1.3663949103991p2
+expm1,0x1.b8c985fd94ab2p-4,0x1.a2a513214cf08p-4
+expm1,-0x1.d6bb18b6e1ceep-1,-0x1.4254ae7d34b85p1
+expm1,0x1.26e534694e3fap6,0x1.141548c4753dcp2
+expm1,-0x1.ffffffffec6fdp-1,-0x1.9720442923732p4
+expm1,-0x1.ff5ad1e90c8c8p-1,-0x1.ab4b38457d0ebp2
+expm1,-0x1.1854a1c9511f8p-3,-0x1.2d781c2629e67p-3
+expm1,0x1.49ae4bd04aec5p-2,0x1.1dcf3fe420e8cp-2
+expm1,0x1.64b8d50747509p1,0x1.54e02692fbe63p0
+expm1,-0x1.93a152134879dp-1,-0x1.8d82a61085183p0
+expm1,0x1.5eb4a9cb49518p-4,0x1.507f4aea5278ep-4
+expm1,-0x1.60ed8908acc26p-3,-0x1.835b0033fa82ap-3
+expm1,0x1.894401e1471aep5,0x1.f524b041d6afep1
+expm1,0x1.5e7713610bc9p4,0x1.90ceeb59d2e65p1
+expm1,0x1.1a9381803652ep18,0x1.9269de86ceb5bp3
+expm1,0x1.84df8f292531dp-1,0x1.214ceb7bf4fe3p-1
+expm1,0x1.af8deb21df20dp31,0x1.60280da9f724p4
+expm1,-0x1.f3c026d29d55ep-1,-0x1.ddcdee9ac0aedp1
+expm1,-0x1.8c475f33dd3cdp-1,-0x1.7cb5417d1500cp0
+expm1,0x1.eaf808c699c4p1,0x1.93765b7874f94p0
+expm1,-0x1.3f9c68880e8dp-2,-0x1.7f1ed1aa3dfbep-2
+expm1,0x1.028b61870c1ebp13,0x1.20ab69b28a6f2p3
+expm1,-0x1.e29e39ada503bp-1,-0x1.6dd121a3784ecp1
+expm1,0x1.d44a26593915ap-1,0x1.4c8e56d4b38f6p-1
+expm1,0x1.a12b346528777p-2,0x1.5df08a69ffa25p-2
+expm1,0x1.de99015a25355p0,0x1.0ddc7b316f55cp0
+expm1,-0x1.4751ce9f04508p-3,-0x1.64a58d2d3d862p-3
+expm1,0x1.c1f8914a16a78p0,0x1.03af8005e67f4p0
+expm1,0x1.1eac11460d1ddp0,0x1.80ae0cd2144f9p-1
+expm1,0x1.d5625b899ba64p0,0x1.0aa15159453cap0
+expm1,-0x1.b2d1ac357493fp-2,-0x1.1b0087f018c8ep-1
+expm1,0x1.519ad3e7f43aep0,0x1.ae9c503c2cb75p-1
+expm1,-0x1.fff8c6ad7f403p-1,-0x1.39cb9cb664d73p3
+expm1,0x1.051e09bc2e036p-1,0x1.a5ff2b458f59p-2
+expm1,0x1.9d35b26f2f0ecp-1,0x1.2ef2c216d36d7p-1
+expm1,0x1.6ddab7f791d8ep1,0x1.59a763b7ec024p0
+expm1,0x1.bdd26e12355b2p0,0x1.022d35d7df995p0
+expm1,-0x1.ed601aef58865p-1,-0x1.a82bf8e819c95p1
+expm1,-0x1.37184d31e17ecp-2,-0x1.72d082e93cd4dp-2
+expm1,0x1.daa52813f98e3p0,0x1.0c7ae8f0e2dadp0
+expm1,0x1.e17ce6f653039p1,0x1.8f82bfe855b11p0
+expm1,-0x1.acc878996cb32p-1,-0x1.d11ea87778deap0
+expm1,-0x1.7f2d6f558e874p-2,-0x1.dff7f18b3eb8dp-2
+expm1,0x1.019a0c524a6d4p4,0x1.6b6721fb77d64p1
+expm1,0x1.2eee056e6be7fp0,0x1.8fcb18f982104p-1
+expm1,-0x1.ee02c1c1f29a4p-1,-0x1.ac9d546d777f1p1
+expm1,0x1.e0f8520e3f74fp7,0x1.5f27da12948d5p2
+expm1,-0x1.fa51f9013364ep-1,-0x1.2017185e263aap2
+expm1,-0x1.fffff347e2e97p-1,-0x1.d9235e1b7a5a9p3
+expm1,-0x1.4fadeda3c8741p-1,-0x1.10e6bc2ddc52p0
+expm1,-0x1.8374a531bf374p-1,-0x1.69e5ccaf5364fp0
+expm1,-0x1.f243817ff9248p-1,-0x1.cf23dfadf368ep1
+expm1,0x1.87df0d951cb24p-2,0x1.4bce259942fcap-2
+expm1,-0x1.fd7cf4a0733a6p-1,-0x1.544e73656c7d8p2
+expm1,-0x1.fffffffdd8918p-1,-0x1.61b44adda7663p4
+expm1,0x1.3de6ebcb26012p-1,0x1.ee931b172020ap-2
+expm1,-0x1.ffffb1a5737ap-1,-0x1.9ef551cf59b37p3
+expm1,0x1.07d0e99a02bc2p-2,0x1.d57736189731ap-3
+expm1,0x1.a44f8299e564cp0,0x1.f1652af1430b5p-1
+expm1,0x1.bf47a56b4930ep0,0x1.02b5348d41e5bp0
+expm1,-0x1.9eb51a0d87adbp-1,-0x1.a91d363e50b44p0
+expm1,-0x1.77ca3c0fe0726p-1,-0x1.52f9f6f4c9acp0
+expm1,0x1.166de4ef3d416p1,0x1.27c6f62d2c468p0
+expm1,0x1.08f3ece97b06ap0,0x1.6bc44e11565c8p-1
+expm1,-0x1.23a705dc834e6p-2,-0x1.5743044c93751p-2
+expm1,0x1.b6edc05359a9bp-1,0x1.3cfc92a47c822p-1
+expm1,-0x1.3993741effd9bp-1,-0x1.e555903f9fc13p-1
+expm1,0x1.92613113c8a48p2,0x1.fc7228bab038bp0
+expm1,-0x1.7755e7311d1aep-1,-0x1.521fb0710abc3p0
+expm1,0x1.1a21c198f89bep1,0x1.2a194b3e5d53ep0
+expm1,-0x1.c9d0eaca3311bp-4,-0x1.e57bc924e2f2dp-4
+expm1,-0x1.febb541b2821dp-1,-0x1.800b46e48f2b6p2
+expm1,-0x1.ffc5b8ba75354p-1,-0x1.edf824a841cdbp2
+expm1,0x1.2cfdd76a7d35fp12,0x1.0f5b2a5d63f27p3
+expm1,-0x1.dcf1c5cf2184cp-2,-0x1.40fbd7c074ceap-1
+expm1,-0x1.f1ff96299ef96p-2,-0x1.5513e8d699d37p-1
+expm1,0x1.f428621e562fap1,0x1.973c1debbda23p0
+expm1,0x1.16ea64da4a6fp-1,0x1.bd4dae186e0dap-2
+expm1,-0x1.558389c108432p-1,-0x1.1983ffafcc07ap0
+expm1,0x1.235fb25f5a3cap0,0x1.8518c2271a4efp-1
+expm1,-0x1.73ac79e363b7bp-4,-0x1.85a1b57606f2dp-4
+expm1,-0x1.82d81ce50142ep-1,-0x1.68a4d5e78b7e3p0
+expm1,0x1.f581bb202cb26p-4,0x1.d919f2643fc6ep-4
+expm1,-0x1.6986e8c578466p-3,-0x1.8dc57cf5061e6p-3
+expm1,-0x1.352b3b5f86f8p-1,-0x1.da163c15bcbcbp-1
+expm1,-0x1.51f36d5848994p-1,-0x1.14387fc6f05bbp0
+expm1,-0x1.c08862cefbe94p-1,-0x1.0b3d0dd5bcb51p1
+expm1,-0x1.a6fdd18c77ce1p-1,-0x1.bfe54b897ab48p0
+expm1,-0x1.715d4d5a12f71p-1,-0x1.472d19c0097fp0
+expm1,0x1.25c83b0e671c1p0,0x1.87582f2251831p-1
+expm1,-0x1.0p0,-0x1.6d094519728eep5
+expm1,0x1.ac3d6de48d199p-3,0x1.84de863d16378p-3
+expm1,-0x1.0p0,-0x1.399ead5a292dcp6
+expm1,-0x1.2f6eb3e922f15p-1,-0x1.cbceb9f83bfb9p-1
+expm1,-0x1.2b7be3da57f59p-1,-0x1.c23489eca97bp-1
+expm1,0x1.8897fbecee0f6p8,0x1.7e6ba0eb82ac8p2
+expm1,0x1.af2c7f9a305b7p-8,0x1.adc2f9e2071fdp-8
+expm1,-0x1.bad097ccf9d39p-2,-0x1.21ff7db3be30ep-1
+expm1,0x1.76d7bf831b3ap13,0x1.2c8def13c5c46p3
+expm1,-0x1.e34e24d9fde43p-3,-0x1.13a212e510428p-2
+expm1,0x1.812e3302714c6p0,0x1.d615987472fadp-1
+expm1,-0x1.f327d02c5f307p-2,-0x1.56349189bf5c1p-1
+expm1,-0x1.8fc27592d306bp-4,-0x1.a4a3312901e9ep-4
+expm1,-0x1.060664c4e8ff6p-1,-0x1.6f15dac9569f1p-1
+expm1,0x1.1b42f11d89058p-2,0x1.f4288b79c0776p-3
+pow,NaN,-0x1.3543856880754p-1,0x1.35716fc87723bp0
+pow,0x1.1d4a986c89024p0,0x1.43ced9e886399p-3,-0x1.e126d87d20ed6p-5
+pow,0x1.522cbcdf959dep1,0x1.3c7d675466f15p-1,-0x1.0284cd3f0c777p1
+pow,0x1.b9bb1a3e302d4p4,0x1.5b6d1c408c6b9p-3,-0x1.decec1eac9a7cp0
+pow,0x1.73657e5443b04p15,0x1.b14dd1bdae0bp2,0x1.685fb1288c6ebp2
+pow,0x1.42aabebdcc329p-3,0x1.dbac3718db8c6p2,-0x1.d7b5616fb60a8p-1
+pow,NaN,-0x1.02396705ce823p1,-0x1.8534721a7fab8p-1
+pow,0x1.0d1bfde3040d9p0,0x1.0bcf497703256p0,0x1.1b7acc031c2b8p0
+pow,NaN,-0x1.673a84a184115p-1,0x1.da2090fb36b4ap0
+pow,NaN,-0x1.0acacaef8fc6ap0,-0x1.608b00fd22779p-1
+pow,NaN,-0x1.31a1f56d0d76cp0,-0x1.8ee0c2486c56cp-3
+pow,0x1.5833b6886737cp8,0x1.6cbf4ee77bc2bp8,0x1.faf7da80b95ap-1
+pow,0x1.8b0d0db11da52p-2,0x1.0c796357a15bap3,-0x1.ca895d25c2f87p-2
+pow,NaN,-0x1.9557e8d5ff0a4p3,0x1.53602f904ab43p-1
+pow,NaN,-0x1.e33ddb97a2aa5p-1,-0x1.de3bf71f3e726p-4
+pow,0x1.f9cdb40f437b6p1,0x1.023eb1fa2e356p-2,-0x1.feb82de9ff0a9p-1
+pow,NaN,-0x1.0d703b600d22ap-1,0x1.0f8b218cb4213p1
+pow,0x1.beac94ab9f868p-2,0x1.0e80760e867b5p1,-0x1.1bd8f6483defap0
+pow,NaN,-0x1.67450003d3a11p1,-0x1.2d82492ed37bap-4
+pow,0x1.206859cb610d6p0,0x1.230e63e0b0af4p1,0x1.292a06365effep-3
+pow,NaN,-0x1.e8c208b279e31p1,-0x1.db752e355f602p-1
+pow,NaN,-0x1.4129bf9beb84ep-1,-0x1.b18d8d5a363bap5
+pow,0x1.6ddd050ff85d3p0,0x1.9c311e9bc98dp-2,-0x1.91d2ce7ba1c81p-2
+pow,NaN,-0x1.6cdde918c6bb7p1,-0x1.13660ce5486d7p1
+pow,NaN,-0x1.d8a622fb32304p-1,-0x1.e3d8cb360b95cp0
+pow,NaN,-0x1.1f6deb57fbf3ep2,0x1.71a34e498178ep1
+pow,NaN,-0x1.aca945800269dp-1,0x1.246c80ddde002p5
+pow,0x1.f6fb38b81fe63p-1,0x1.f9269e1b13d24p-1,0x1.51d06818109ecp0
+pow,NaN,-0x1.70b5d7bc0df1ep2,0x1.1f8857556cb22p-1
+pow,0x1.be5f7398575d1p-1,0x1.89ddac959f5c5p0,-0x1.46063f0f1fd94p-2
+pow,NaN,-0x1.052522d976421p0,-0x1.576e0648a6313p-1
+pow,NaN,-0x1.c610ba3656ed4p-2,0x1.cc5ea57d50651p-2
+pow,NaN,-0x1.3b298780eaf4bp0,-0x1.9e4a93144fbf4p-2
+pow,0x1.3405a5acb927ep-1,0x1.31f27c400e9c7p0,-0x1.6cee77b97b391p1
+pow,NaN,-0x1.d4cc72dde98bdp0,-0x1.4c12bfe6381cbp-1
+pow,NaN,-0x1.a6654edf4e215p-1,-0x1.4cfa4851698bbp0
+pow,0x1.19cce90d83238p-146,0x1.5fd6a4426b0edp3,-0x1.515f384fdff55p5
+pow,NaN,-0x1.1b6e4a199b791p3,0x1.34e2a9b51e552p0
+pow,0x1.b1ab929e7ffdep-2,0x1.0231b33713194p1,-0x1.3976d1457c252p0
+pow,0x1.50d9f2fe33c7p-3,0x1.dde75639ea142p0,-0x1.721d427b01b2p1
+pow,0x1.0c7b1dd03f4b5p-4,0x1.7e424718ff1fdp-6,0x1.73435e4223861p-1
+pow,0x1.e130ed2ab279ap-3,0x1.674d21afc87dcp2,-0x1.add1aebe71ca4p-1
+pow,0x1.60dc514240fe2p0,0x1.ef54ddeb53ad2p-2,-0x1.c475f576d0f2dp-2
+pow,NaN,-0x1.012aeea2abd2ap0,0x1.2392fbe81d72cp-2
+pow,0x1.4f079d2764c28p7,0x1.6887b16643f58p-1,-0x1.d3364956d4d5cp3
+pow,0x1.9b8abb1d635b7p-2,0x1.cf76925768938p-6,0x1.05cf3eadaebdcp-2
+pow,NaN,-0x1.35634d0706b66p0,-0x1.22acb280acafdp0
+pow,0x1.f78cf9a9f2a4cp1,0x1.3e469a290341p1,0x1.80ef0426de88cp0
+pow,NaN,-0x1.9be8a4e6909dcp1,-0x1.901663cbb84fep-3
+pow,NaN,-0x1.1b2752600a802p-2,-0x1.da6c7a226c522p-1
+pow,NaN,-0x1.5fd774062642fp-2,0x1.886753a936a35p2
+pow,0x1.3edebd5811a14p-2,0x1.f20639aad80eap3,-0x1.b33cc11620f11p-2
+pow,0x1.fb715a6f77759p-1,0x1.ea47747e9fbf6p-1,0x1.a6639ae10617ep-3
+pow,0x1.17099bd97d53p-1,0x1.1138cc352d8dbp1,-0x1.99da752c2b32ap-1
+pow,NaN,-0x1.042cb9e40a3c3p1,-0x1.40cd562224abcp-1
+pow,NaN,-0x1.1c50c06fa3246p1,-0x1.31cef7cdd7413p0
+pow,0x1.ad60687187bfp0,0x1.3883a387b687cp-1,-0x1.0c2d4d6d96bb2p0
+pow,NaN,-0x1.a4f79c9fb339ep-4,0x1.59da8f5b4a73ep-2
+pow,NaN,-0x1.4c934c90f450ap0,0x1.5536d4aef0549p-2
+pow,NaN,-0x1.ad336d4adc286p-1,0x1.58ca22de47548p2
+pow,0x1.1c20079b73d21p0,0x1.840da607c2a5ap1,0x1.80f3df570f788p-4
+pow,0x1.7fb0f215b758ep0,0x1.b7b453bf4d92ap-4,-0x1.735b8374b0c87p-3
+pow,NaN,-0x1.fcab6aae1796fp-2,-0x1.780f83d5141cep-1
+pow,0x1.69c9ece38bf9cp3,0x1.3ae7171e64493p-3,-0x1.4b9afac6a55e4p0
+pow,0x1.0a21f58dbc366p-1,0x1.7a545c00cb271p0,-0x1.acdcac99c85abp0
+pow,NaN,-0x1.3e08913f9f21fp-3,0x1.81e633124343p-1
+pow,0x1.d2cb35b746486p-1,0x1.e695c53b4eeaep-6,0x1.aea9911568678p-6
+pow,0x1.0dbb3a7334225p0,0x1.6675cb29a0c1p0,0x1.3ddd7059c104cp-3
+pow,NaN,-0x1.070c2fa9e6802p1,0x1.9112142d4e9dcp-1
+pow,0x1.0a902bf5722d5p0,0x1.447dceaefa645p-1,-0x1.6b248caf29d8dp-4
+pow,0x1.1330f22590c4ap1,0x1.d72e780e0abfep-2,-0x1.f8e198dc7ba8ap-1
+pow,0x1.05b20b0a7d5c5p-3,0x1.a08b5114d4794p-3,0x1.4ab6ce7f2d8d9p0
+pow,NaN,-0x1.6cb5596f5bccap-1,-0x1.e026f2be2c735p-6
+pow,NaN,-0x1.bff74445e3f44p1,0x1.ff1d828a8f9fdp-2
+pow,0x1.bb29b1a0d9593p-1,0x1.19280f7df4f31p0,-0x1.8a574b3c6c21fp0
+pow,0x1.515d6f04001f2p0,0x1.8d40690d3afa9p1,0x1.f3137043bca52p-3
+pow,0x1.e69a356a6053p-1,0x1.e6272faa3e942p-1,0x1.f6de8fe572b0ep-1
+pow,0x1.de90ff863552cp-9,0x1.9d5d54f838bcp2,-0x1.811f7d5c9582p1
+pow,NaN,-0x1.023f6037d59cfp2,-0x1.4dfb18419fccp-2
+pow,NaN,-0x1.1cc20d156cb79p-1,0x1.459252a9af3d3p-2
+pow,0x1.d9135c8e48446p1,0x1.eb6de3ef8ffdfp-6,-0x1.7db8a8d7ce896p-2
+pow,0x1.0bfa0812358ap0,0x1.cb17ab770fd1ep-1,-0x1.ad40b171d56aep-2
+pow,NaN,-0x1.a8b99e1b72634p2,0x1.34643c33653d7p0
+pow,0x1.51a6995175d4ep-6,0x1.4708da39879c3p0,-0x1.fb4623599a3d8p3
+pow,0x1.0edaeef4b9561p0,0x1.0dbb2725712a2p0,0x1.1460b8658035p0
+pow,NaN,-0x1.045318f41eb9ap-1,-0x1.39c26e9f74658p-1
+pow,0x1.06c00c0bbad58p0,0x1.e5d8aef9c4c71p-1,-0x1.fc4b3bfffb0bcp-2
+pow,0x1.947f16f7e69b2p2,0x1.043dc775b7b51p3,0x1.c269498ff8d8ap-1
+pow,NaN,-0x1.5c12f7f31b4c3p-3,0x1.bfe15378a1e56p-3
+pow,NaN,-0x1.1f0cc14e65be8p0,-0x1.2f686c552f4bap-3
+pow,0x1.96a6a076abc92p1,0x1.fb9f996009b44p0,0x1.b04577c9d132dp0
+pow,NaN,-0x1.9033f9bf4d8bcp-1,0x1.71c885dc2d9aap-1
+pow,0x1.1b25976c149efp0,0x1.dbca857fcd851p-1,-0x1.5fc86ea34c098p0
+pow,0x1.0d9020d171475p-1,0x1.da9962780fcafp0,-0x1.0a0c5a536525ep0
+pow,NaN,-0x1.f0be3b0aed394p-3,0x1.6684a2e93eacfp-1
+pow,NaN,-0x1.13347d844b3ap2,0x1.52e80bda362f6p0
+pow,0x1.8ecabf0927c74p-1,0x1.08ef4600ac2a6p-1,0x1.8461b6ebd2638p-2
+pow,NaN,-0x1.545bab8fdb374p1,0x1.140b5443f6851p0
+pow,0x1.605e3b7e1a8a9p0,0x1.b694715b3bb5fp0,0x1.2fda4421ec27bp-1
+pow,0x1.19d126e964ecdp2,0x1.3886382511f91p2,0x1.de9b9c6ec17c8p-1
+pow,0x1.4b2a7193ded54p2,0x1.ffdaafc6d81ecp0,0x1.2faa4a532094dp1
+pow,0x1.07232bb72bf0ep182,0x1.e9c446b9f242cp-4,-0x1.db4ab29699bb1p5
+pow,NaN,-0x1.9e3204055de95p-1,0x1.0a5e93db70184p-1
+pow,0x1.1acd2b9124f7dp0,0x1.275823342912fp0,0x1.649532579916dp-1
+pow,0x1.0f47ca3682eccp0,0x1.485e42c4fd541p0,0x1.dcec8bd69c924p-3
+pow,NaN,-0x1.23bb2f8be2d74p0,-0x1.c9da27afeb55dp-2
+pow,NaN,-0x1.c587034a392cbp-2,-0x1.f25c5fb1a07bbp-1
+pow,0x1.05db5e5eda5c5p0,0x1.8db9e4a05f398p-1,-0x1.6edc4a7b93097p-4
+pow,NaN,-0x1.ab87fc0e311b7p1,-0x1.53034039016e2p1
+pow,NaN,-0x1.44bb4f7048ddfp-1,0x1.e6e647080ff5bp-2
+pow,NaN,-0x1.7817a6eb0dc76p-2,0x1.02e617c35511ap-2
+pow,NaN,-0x1.e01714a11dc2bp0,0x1.94ac311105b4ep-4
+pow,NaN,-0x1.48ad415149238p3,-0x1.7356089af8d59p-2
+pow,0x1.7aa3cf5e026e7p-2,0x1.06ed5362f04e2p-1,0x1.7e2962d832e75p0
+pow,0x1.5570ae9493bbfp0,0x1.e323a27f94fcbp-5,-0x1.a0bd6a6e9f10cp-4
+pow,0x1.152ee4ea3f7a5p1,0x1.b32a1da818d0dp1,0x1.4347b7ca029a7p-1
+pow,NaN,-0x1.03714e497f8fbp2,0x1.61ebbba8e8d3p0
+pow,NaN,-0x1.f94e76ca5ba42p-1,0x1.5fdaf42945025p0
+pow,0x1.188dcd71a310ap0,0x1.0f34cf5f7df65p0,0x1.965694c95ecc6p0
+pow,0x1.0b2cadb4cb147p0,0x1.0c40249de3f62p0,0x1.d3f98bdbca83dp-1
+pow,0x1.a5b803cf49fc6p-1,0x1.a5ea87cc7b8c2p0,-0x1.8d93f53a8c9abp-2
+pow,NaN,-0x1.045dd160caeb5p1,-0x1.562ce2be56b8ep0
+pow,0x1.84030e972f55cp1,0x1.009aa78e33834p2,0x1.98e4d1f15c54cp-1
+pow,NaN,-0x1.6e44edc8b9975p0,0x1.27b05fd665f56p-2
+pow,0x1.1d6e82b8c4526p-2,0x1.e25695af839a1p-2,0x1.b267e3187f557p0
+pow,0x1.67b1c3b809065p2,0x1.ad50aab97c6f6p-1,-0x1.39a5dd9c9ec23p3
+pow,NaN,-0x1.378b7a14b3123p-1,-0x1.d623cb500779bp-1
+pow,NaN,-0x1.b6b576540adb8p-4,-0x1.67f919b7388efp1
+pow,NaN,-0x1.a0e03f2c21b03p0,0x1.a0a6719a89da7p-4
+pow,NaN,-0x1.90f94b1510e6bp0,-0x1.2c5145f8c1ca6p-2
+pow,0x1.0820f220c6429p-3,0x1.c653e462f289fp2,-0x1.0b86c892c6d69p0
+pow,0x1.53298c15fd8dcp-3,0x1.d85a4c492edd1p0,-0x1.77beacc12e4cap1
+pow,0x1.e6872737c5bb5p-1,0x1.f99b40b5f414dp-2,0x1.282ec81705241p-4
+pow,0x1.05d050c7ea53bp0,0x1.16ce13c6d382cp0,0x1.0d76f4e269154p-2
+pow,0x1.3baf902827162p2,0x1.52d54e6210d31p-2,-0x1.7165fe6d96d64p0
+pow,0x1.8702acf8bd48ep2,0x1.83b27f2d7efbp-3,-0x1.165f690b351f5p0
+pow,NaN,-0x1.9785fb65297f6p2,-0x1.1b458cc769686p3
+pow,NaN,-0x1.09cb066385f12p0,0x1.f753576d60128p-6
+pow,0x1.e4b995c800645p-5,0x1.06d720a7e6f88p4,-0x1.02985a86e666ap0
+pow,NaN,-0x1.0939085a6f701p0,0x1.7ddd006196baap2
+pow,NaN,-0x1.d87072a74d8a6p6,0x1.790eaae918275p0
+pow,NaN,-0x1.fcc2b5194f768p-1,-0x1.c9d5f2a783883p-1
+pow,NaN,-0x1.6692393959fe5p-1,-0x1.3863994c1922cp1
+pow,NaN,-0x1.b0f50f7bf364cp-2,-0x1.14d074c377108p-5
+pow,NaN,-0x1.a20e8f0b2b858p-2,-0x1.2c0f54e075332p-2
+pow,NaN,-0x1.12d268bbaeea4p0,0x1.597d686214e67p0
+pow,0x1.b13cdddcc07c3p-2,0x1.46bbc31488813p3,-0x1.7b1c6344453f9p-2
+pow,NaN,-0x1.ff476e8f0a7e3p0,-0x1.62a04be50d505p0
+pow,NaN,-0x1.bf00588a896d3p-2,0x1.6c1c5d07803cap-1
+pow,0x1.e55b9058bb955p-7,0x1.1ec2d27a4235p1,-0x1.4e3872a7c948fp2
+pow,NaN,-0x1.b88b3d3bdf5d4p-2,-0x1.37bd82f1781b7p0
+pow,0x1.13812f08fe19dp0,0x1.d40211a90d254p-1,-0x1.a2775702dff48p-1
+pow,0x1.b3ada66ab5246p-1,0x1.869cdca43c5c8p-1,0x1.3169cc46548ep-1
+pow,NaN,-0x1.37849bc093986p0,-0x1.2aa7282eb9ebap-3
+pow,NaN,-0x1.a8944dda7586ep6,-0x1.2e47aadc1b58dp0
+pow,0x1.5aba3298bf201p-2,0x1.40a04ef8a623bp1,-0x1.2de9e2569d6d5p0
+pow,0x1.db384c61b4a74p-1,0x1.2914b4157ee24p0,-0x1.00758c0c2d72ep-1
+pow,0x1.03facf5415462p2,0x1.ada67df67a3b8p-2,-0x1.9d2c32cfcee69p0
+pow,NaN,-0x1.3088491768175p-1,0x1.bd3501f5958ap0
+pow,0x1.03796726a06a6p0,0x1.843fc5dd50c7ep-1,-0x1.8f1eee57736edp-5
+pow,NaN,-0x1.73a9bb89db993p-4,0x1.f9336be7fc6f5p0
+pow,0x1.3c59529730582p-1,0x1.931b3f08ef975p2,-0x1.0be83f40ce812p-2
+pow,NaN,-0x1.1c52401964251p0,-0x1.e209fab00f3cdp3
+pow,0x1.5870ce3110d05p-8,0x1.37a7a966690aap-5,0x1.9b0295360af3cp0
+pow,NaN,-0x1.97947ee95e148p2,0x1.fdf94a10f85d8p-2
+pow,NaN,-0x1.e3bd8870685d6p-1,0x1.0c9f51eb9fb1p-4
+pow,NaN,-0x1.06c9285154c11p-1,0x1.d21f5ac0f88dcp-4
+pow,NaN,-0x1.e851a51621887p-2,-0x1.495544552cfd7p-1
+pow,0x1.b15715904a6d4p-2,0x1.bccef58928994p-1,0x1.87377793afff2p2
+pow,0x1.3630070d85688p1,0x1.16030ade3d166p-1,-0x1.7311d0f1c9818p0
+pow,0x1.7b0bf1f3677efp0,0x1.5a0c8170f9574p0,0x1.4d5c01933c90ap0
+pow,0x1.4347bb7dbd2bap-5,0x1.00ab1db1da50fp-1,0x1.2b94fcad8bb28p2
+pow,0x1.e1d6f6b4ad3dcp0,0x1.1a71c356fda77p-1,-0x1.102d8be7b68b2p0
+pow,0x1.71ca2e9c802efp-1,0x1.93e69c1931aa2p0,-0x1.6d5b4b1eae5bap-1
+pow,0x1.60ee40140178cp-2,0x1.efd52cc8e9b32p-3,0x1.8082bff8e9734p-1
+pow,NaN,-0x1.3aa803d4e5afcp0,-0x1.853016b0f962ap0
+pow,0x1.1248c3ab2c50ap0,0x1.0a086b18b7be1p-1,-0x1.af9a7315362dcp-4
+pow,NaN,-0x1.1c65baf6ed71bp-1,-0x1.e4ce9408d718cp1
+pow,NaN,-0x1.129c9c18a45c9p0,0x1.dbd7977bbb3dbp1
+pow,NaN,-0x1.f8a2cbe4c9971p0,-0x1.6402723e29405p0
+pow,NaN,-0x1.090715aeef52ap-3,0x1.ff3c3f34c1216p0
+pow,0x1.633a5b7a503a6p6,0x1.48716eed60949p4,0x1.7c16158088824p0
+pow,NaN,-0x1.44930bdd5a09fp0,0x1.f17780da0c3bcp-4
+pow,0x1.3d8d6624ecbp-10,0x1.d6ec1a8e01545p-7,0x1.95411fce4c444p0
+pow,0x1.e5f2940ed1965p-1,0x1.1a84da1d7650cp1,-0x1.0e2f2b637c419p-4
+pow,0x1.5b1f6c1d4f497p-2,0x1.5e69e0f96815bp-2,0x1.0240a70912ecap0
+pow,0x1.7fd48e097e9a4p-4,0x1.23cefbdbeed36p3,-0x1.123500770a0b2p0
+pow,0x1.3c6a0ee0f14a2p-2,0x1.412b81765458dp-1,0x1.42579fdaa45edp1
+pow,0x1.1c477b9b71089p0,0x1.1d8bb34a7e43ap0,0x1.eb29bada420cfp-1
+pow,NaN,-0x1.7f6d0fa1fb44ep1,0x1.6b638367aa265p0
+pow,NaN,-0x1.42b4ebd31e0a3p3,-0x1.6d3fb072dd01dp1
+pow,0x1.52f4fb825bbf4p-1,0x1.7fc88d75156c4p-1,0x1.6e4f6fe5266fdp0
+pow,NaN,-0x1.2f63c263fcce9p-1,-0x1.fd3f99df0dd14p-1
+pow,0x1.aa8e9f53ca8adp1,0x1.eee1f221556d9p-4,-0x1.239c3f92a6941p-1
+pow,0x1.2fd9a918fec76p0,0x1.19574be3b830ap0,0x1.d0bf5745a62fbp0
+pow,0x1.e900a2abe38b7p-3,0x1.95f0e06b551e5p-7,0x1.4e01d522f7c2bp-2
+pow,NaN,-0x1.961230e761e2bp0,-0x1.a8d9a224ff5abp-2
+pow,NaN,-0x1.22a4b03c16fd4p-1,-0x1.bba2e8dcba702p-1
+pow,NaN,-0x1.9f94bd566490ap-1,-0x1.25051ed331b22p0
+pow,NaN,-0x1.0c252587ffbbep2,0x1.3df68e7581d3bp1
+nextUp,0x1.d3040e41e2ed6p-1,0x1.d3040e41e2ed5p-1
+nextUp,-0x1.53b76e8b2e194p0,-0x1.53b76e8b2e195p0
+nextUp,-0x1.2e7cc91f10c7fp3,-0x1.2e7cc91f10c8p3
+nextUp,0x1.115ecd0d3d8a9p-1,0x1.115ecd0d3d8a8p-1
+nextUp,-0x1.0a68bfff8d648p0,-0x1.0a68bfff8d649p0
+nextUp,-0x1.be4afc4ccae83p-1,-0x1.be4afc4ccae84p-1
+nextUp,-0x1.451ff3485acbbp-1,-0x1.451ff3485acbcp-1
+nextUp,0x1.14c999736e394p-1,0x1.14c999736e393p-1
+nextUp,-0x1.b01b9c1b9a649p3,-0x1.b01b9c1b9a64ap3
+nextUp,-0x1.665f667e2b3d1p0,-0x1.665f667e2b3d2p0
+nextUp,-0x1.1760f0ff2b4e3p0,-0x1.1760f0ff2b4e4p0
+nextUp,-0x1.910dc2365ef13p-1,-0x1.910dc2365ef14p-1
+nextUp,-0x1.16d967cb6fe61p1,-0x1.16d967cb6fe62p1
+nextUp,0x1.1f04263fb3e0fp0,0x1.1f04263fb3e0ep0
+nextUp,-0x1.69d304c513701p0,-0x1.69d304c513702p0
+nextUp,0x1.f529637ef54c6p-2,0x1.f529637ef54c5p-2
+nextUp,0x1.9acafec6b8ff6p-8,0x1.9acafec6b8ff5p-8
+nextUp,0x1.0375a2b72b97cp0,0x1.0375a2b72b97bp0
+nextUp,-0x1.9646c16b6fb92p-1,-0x1.9646c16b6fb93p-1
+nextUp,0x1.1e60599537373p0,0x1.1e60599537372p0
+nextUp,-0x1.8a8df712b9d86p-2,-0x1.8a8df712b9d87p-2
+nextUp,-0x1.a016f5f219b25p0,-0x1.a016f5f219b26p0
+nextUp,-0x1.e239718239c74p-1,-0x1.e239718239c75p-1
+nextUp,0x1.7c453055df8bbp-1,0x1.7c453055df8bap-1
+nextUp,0x1.72a89333661e3p-1,0x1.72a89333661e2p-1
+nextUp,-0x1.e638b805d1849p1,-0x1.e638b805d184ap1
+nextUp,0x1.88445788e7263p4,0x1.88445788e7262p4
+nextUp,-0x1.5bc1c772e6149p-1,-0x1.5bc1c772e614ap-1
+nextUp,-0x1.8d8971d94147fp-2,-0x1.8d8971d94148p-2
+nextUp,0x1.1216da190a47fp0,0x1.1216da190a47ep0
+nextUp,0x1.1f616373910f9p0,0x1.1f616373910f8p0
+nextUp,0x1.d7189f97e6d8ap-1,0x1.d7189f97e6d89p-1
+nextUp,-0x1.17b972d833cap0,-0x1.17b972d833ca1p0
+nextUp,-0x1.06b0482e9926ap0,-0x1.06b0482e9926bp0
+nextUp,-0x1.f0ad7aa11b04ep-3,-0x1.f0ad7aa11b04fp-3
+nextUp,-0x1.4744eeb81da2fp-9,-0x1.4744eeb81da3p-9
+nextUp,0x1.ff2a8df85b779p-1,0x1.ff2a8df85b778p-1
+nextUp,0x1.3130e66165a86p2,0x1.3130e66165a85p2
+nextUp,-0x1.3f67ba776c895p-2,-0x1.3f67ba776c896p-2
+nextUp,-0x1.dc657d757ae33p4,-0x1.dc657d757ae34p4
+nextUp,0x1.8e2bc626c19a4p-1,0x1.8e2bc626c19a3p-1
+nextUp,0x1.b80a35d69ebf3p-1,0x1.b80a35d69ebf2p-1
+nextUp,0x1.0c580407a5e36p-1,0x1.0c580407a5e35p-1
+nextUp,-0x1.e454f464be1ffp-5,-0x1.e454f464be2p-5
+nextUp,0x1.d02a4bdd0ebd8p-1,0x1.d02a4bdd0ebd7p-1
+nextUp,0x1.14cdd76d4b8dfp-9,0x1.14cdd76d4b8dep-9
+nextUp,0x1.e0a2080f509d3p4,0x1.e0a2080f509d2p4
+nextUp,0x1.381f37d3f5cd6p-1,0x1.381f37d3f5cd5p-1
+nextUp,0x1.158054cb50452p2,0x1.158054cb50451p2
+nextUp,0x1.5b2e36af1be1cp-4,0x1.5b2e36af1be1bp-4
+nextUp,-0x1.66961ded5be6ap-3,-0x1.66961ded5be6bp-3
+nextUp,-0x1.33a1f920451ffp0,-0x1.33a1f920452p0
+nextUp,0x1.511eabb05221dp-1,0x1.511eabb05221cp-1
+nextUp,-0x1.242fae41c6d6cp-1,-0x1.242fae41c6d6dp-1
+nextUp,-0x1.1774360b28c26p3,-0x1.1774360b28c27p3
+nextUp,0x1.d50670fb00411p2,0x1.d50670fb0041p2
+nextUp,-0x1.6f974900aa57fp-1,-0x1.6f974900aa58p-1
+nextUp,-0x1.15bdfc41db415p0,-0x1.15bdfc41db416p0
+nextUp,0x1.8016e77d9964fp-2,0x1.8016e77d9964ep-2
+nextUp,-0x1.3ab0226ac5151p-1,-0x1.3ab0226ac5152p-1
+nextUp,-0x1.27ef4b6c31cc5p2,-0x1.27ef4b6c31cc6p2
+nextUp,-0x1.604d629ffd6a8p-2,-0x1.604d629ffd6a9p-2
+nextUp,-0x1.a8e830ae29d51p-2,-0x1.a8e830ae29d52p-2
+nextUp,0x1.06c642cd93e74p-5,0x1.06c642cd93e73p-5
+nextUp,-0x1.6510315f22106p0,-0x1.6510315f22107p0
+nextUp,-0x1.59d954d49e322p2,-0x1.59d954d49e323p2
+nextUp,-0x1.a0d80268e728ep3,-0x1.a0d80268e728fp3
+nextUp,0x1.4750981c87bf6p-1,0x1.4750981c87bf5p-1
+nextUp,0x1.ca59601a4ecf2p1,0x1.ca59601a4ecf1p1
+nextUp,0x1.a4016ef4f07fep-1,0x1.a4016ef4f07fdp-1
+nextUp,0x1.5ae95775ad60fp-1,0x1.5ae95775ad60ep-1
+nextUp,0x1.7705ff641e54ep-1,0x1.7705ff641e54dp-1
+nextUp,-0x1.78f81f25c9ba3p-2,-0x1.78f81f25c9ba4p-2
+nextUp,0x1.2ae4ee50ec5adp-4,0x1.2ae4ee50ec5acp-4
+nextUp,-0x1.3cffd8537ef94p-3,-0x1.3cffd8537ef95p-3
+nextUp,-0x1.1dcaac99cc075p-1,-0x1.1dcaac99cc076p-1
+nextUp,0x1.6aa92508d4bd3p-1,0x1.6aa92508d4bd2p-1
+nextUp,-0x1.ee62b4748493bp-1,-0x1.ee62b4748493cp-1
+nextUp,-0x1.62b0a345a381dp0,-0x1.62b0a345a381ep0
+nextUp,-0x1.ca89336b0d6d7p0,-0x1.ca89336b0d6d8p0
+nextUp,0x1.5d52c172e660bp-1,0x1.5d52c172e660ap-1
+nextUp,-0x1.33b3a532f18efp-1,-0x1.33b3a532f18fp-1
+nextUp,0x1.5ee286d7628c6p0,0x1.5ee286d7628c5p0
+nextUp,-0x1.f54896afd80d9p1,-0x1.f54896afd80dap1
+nextUp,-0x1.7e0ed231e05fbp-1,-0x1.7e0ed231e05fcp-1
+nextUp,0x1.190d97337d16dp-2,0x1.190d97337d16cp-2
+nextUp,-0x1.47e39d27543e6p1,-0x1.47e39d27543e7p1
+nextUp,0x1.f710402c5a0b6p-1,0x1.f710402c5a0b5p-1
+nextUp,0x1.9eab86259cc5ep-1,0x1.9eab86259cc5dp-1
+nextUp,-0x1.e61993c4f1049p-3,-0x1.e61993c4f104ap-3
+nextUp,-0x1.a993a82593211p2,-0x1.a993a82593212p2
+nextUp,-0x1.dcd0767944698p-1,-0x1.dcd0767944699p-1
+nextUp,0x1.27ad12aa4aa63p-1,0x1.27ad12aa4aa62p-1
+nextUp,-0x1.0d8f21dcbd40fp0,-0x1.0d8f21dcbd41p0
+nextUp,-0x1.25ce2fc3e4012p0,-0x1.25ce2fc3e4013p0
+nextUp,-0x1.d32b06d8ec84fp0,-0x1.d32b06d8ec85p0
+nextUp,0x1.09d85d8919589p-6,0x1.09d85d8919588p-6
+nextUp,-0x1.560b1bfb41db6p0,-0x1.560b1bfb41db7p0
+nextUp,-0x1.2f96ae30cdd89p-1,-0x1.2f96ae30cdd8ap-1
+nextUp,-0x1.01755e3844e7dp-3,-0x1.01755e3844e7ep-3
+nextUp,-0x1.9f12b7eb60b02p1,-0x1.9f12b7eb60b03p1
+nextUp,0x1.460ef7006e16ap-1,0x1.460ef7006e169p-1
+nextUp,-0x1.6f2c9a0b25e78p-4,-0x1.6f2c9a0b25e79p-4
+nextUp,0x1.ccf1eb5e43126p-2,0x1.ccf1eb5e43125p-2
+nextUp,0x1.ee914a4e8319dp-1,0x1.ee914a4e8319cp-1
+nextUp,0x1.b9f2373904ccbp-1,0x1.b9f2373904ccap-1
+nextUp,-0x1.22698a06f367dp2,-0x1.22698a06f367ep2
+nextUp,0x1.bee5f900ae40ap-1,0x1.bee5f900ae409p-1
+nextUp,0x1.57c1d081e07e1p0,0x1.57c1d081e07ep0
+nextUp,0x1.32246ec86182cp2,0x1.32246ec86182bp2
+nextUp,-0x1.5ceea872790a6p1,-0x1.5ceea872790a7p1
+nextUp,0x1.db0b05d54a72fp-2,0x1.db0b05d54a72ep-2
+nextUp,0x1.afd3e9982737cp-1,0x1.afd3e9982737bp-1
+nextUp,-0x1.a646aa4a4d81fp-1,-0x1.a646aa4a4d82p-1
+nextUp,-0x1.65e897637b5f9p-3,-0x1.65e897637b5fap-3
+nextUp,-0x1.0f942a08ff30bp0,-0x1.0f942a08ff30cp0
+nextUp,0x1.dad26b69ba743p-1,0x1.dad26b69ba742p-1
+nextUp,-0x1.18c2ecb354efap0,-0x1.18c2ecb354efbp0
+nextUp,-0x1.8ec681589c041p-1,-0x1.8ec681589c042p-1
+nextUp,0x1.6c9430a270787p2,0x1.6c9430a270786p2
+nextUp,0x1.a85867e471f68p-1,0x1.a85867e471f67p-1
+nextUp,0x1.0843a878e12a1p0,0x1.0843a878e12ap0
+nextUp,0x1.6ccc6e57b1cd6p-1,0x1.6ccc6e57b1cd5p-1
+nextUp,0x1.b2aaeb34d39fbp3,0x1.b2aaeb34d39fap3
+nextUp,0x1.2abdb28b7c1e4p5,0x1.2abdb28b7c1e3p5
+nextUp,0x1.b313f8d493a33p-4,0x1.b313f8d493a32p-4
+nextUp,0x1.2be3833358578p-1,0x1.2be3833358577p-1
+nextUp,-0x1.71c37e4676141p4,-0x1.71c37e4676142p4
+nextUp,0x1.3e11db2e11d1cp-1,0x1.3e11db2e11d1bp-1
+nextUp,-0x1.0981ee2170da8p2,-0x1.0981ee2170da9p2
+nextUp,-0x1.5c8e75bf0af76p0,-0x1.5c8e75bf0af77p0
+nextUp,0x1.219e33d06f3d4p-2,0x1.219e33d06f3d3p-2
+nextUp,-0x1.573b7638ca558p-2,-0x1.573b7638ca559p-2
+nextUp,-0x1.dce03b67e91bp-1,-0x1.dce03b67e91b1p-1
+nextUp,0x1.d773763c9af9dp3,0x1.d773763c9af9cp3
+nextUp,-0x1.41215262e0d1p-1,-0x1.41215262e0d11p-1
+nextUp,0x1.24dffa399cd09p-1,0x1.24dffa399cd08p-1
+nextUp,0x1.6a2d79c75bd4p0,0x1.6a2d79c75bd3fp0
+nextUp,0x1.ccaeced5c93cbp1,0x1.ccaeced5c93cap1
+nextUp,-0x1.c2510db061757p-1,-0x1.c2510db061758p-1
+nextUp,-0x1.40258b211f9ecp-1,-0x1.40258b211f9edp-1
+nextUp,-0x1.41bb57a04554dp0,-0x1.41bb57a04554ep0
+nextUp,-0x1.582bf88c38d7p1,-0x1.582bf88c38d71p1
+nextUp,0x1.f59aec20bb862p-1,0x1.f59aec20bb861p-1
+nextUp,-0x1.15e39558d7f1p0,-0x1.15e39558d7f11p0
+nextUp,0x1.067c6d1b9c875p3,0x1.067c6d1b9c874p3
+nextUp,0x1.720a0ee1f2929p1,0x1.720a0ee1f2928p1
+nextUp,-0x1.aff57264e19dep-1,-0x1.aff57264e19dfp-1
+nextUp,0x1.045acc1c7c2efp-2,0x1.045acc1c7c2eep-2
+nextUp,-0x1.038f9095fbf4ep-3,-0x1.038f9095fbf4fp-3
+nextUp,-0x1.4a75d4c6d9f9p1,-0x1.4a75d4c6d9f91p1
+nextUp,0x1.299d935604783p-1,0x1.299d935604782p-1
+nextUp,0x1.27edf0b504754p1,0x1.27edf0b504753p1
+nextUp,-0x1.e4a6ca55e9e11p-3,-0x1.e4a6ca55e9e12p-3
+nextUp,-0x1.818f39f9060bep-1,-0x1.818f39f9060bfp-1
+nextUp,-0x1.36b15ae996101p-1,-0x1.36b15ae996102p-1
+nextUp,0x1.2dff034240e3bp2,0x1.2dff034240e3ap2
+nextUp,-0x1.c206b32a07242p1,-0x1.c206b32a07243p1
+nextUp,0x1.622128d7ead69p1,0x1.622128d7ead68p1
+nextUp,-0x1.e55d3fed82a0dp0,-0x1.e55d3fed82a0ep0
+nextUp,0x1.78c61780b267ep0,0x1.78c61780b267dp0
+nextUp,-0x1.a7cc575e5e61ap-1,-0x1.a7cc575e5e61bp-1
+nextUp,0x1.8c19aeb88f752p-2,0x1.8c19aeb88f751p-2
+nextUp,-0x1.def690507cf6bp-2,-0x1.def690507cf6cp-2
+nextUp,-0x1.17eb10ad97c13p-1,-0x1.17eb10ad97c14p-1
+nextUp,-0x1.1493191c91951p-1,-0x1.1493191c91952p-1
+nextUp,-0x1.4e5c6f56aa9adp-1,-0x1.4e5c6f56aa9aep-1
+nextUp,0x1.0f8f2deae231cp0,0x1.0f8f2deae231bp0
+nextUp,0x1.0bb8d0ee5a33dp-1,0x1.0bb8d0ee5a33cp-1
+nextUp,0x1.f453228e2a49bp2,0x1.f453228e2a49ap2
+nextUp,0x1.2bb00a8ecd186p-1,0x1.2bb00a8ecd185p-1
+nextUp,0x1.7abc047124f6ep-1,0x1.7abc047124f6dp-1
+nextUp,0x1.1b107be53002ep0,0x1.1b107be53002dp0
+nextUp,0x1.96bff92299892p1,0x1.96bff92299891p1
+nextUp,-0x1.fe95a2514fdb4p-1,-0x1.fe95a2514fdb5p-1
+nextUp,-0x1.3aab5df9db757p2,-0x1.3aab5df9db758p2
+nextUp,0x1.09114a178ef03p1,0x1.09114a178ef02p1
+nextUp,0x1.5a610cc38f488p1,0x1.5a610cc38f487p1
+nextUp,-0x1.6463a38870952p-3,-0x1.6463a38870953p-3
+nextUp,0x1.203de7acd52fdp0,0x1.203de7acd52fcp0
+nextUp,0x1.8bca2b5dddde1p-2,0x1.8bca2b5ddddep-2
+nextUp,0x1.2010056a0e9b7p-1,0x1.2010056a0e9b6p-1
+nextUp,-0x1.101cfc82211b4p-1,-0x1.101cfc82211b5p-1
+nextUp,0x1.be249fc8f9c52p-1,0x1.be249fc8f9c51p-1
+nextUp,0x1.783250d25c4fp-2,0x1.783250d25c4efp-2
+nextUp,0x1.71d19e2dc8f26p-2,0x1.71d19e2dc8f25p-2
+nextUp,0x1.0ab3f9ad495abp-1,0x1.0ab3f9ad495aap-1
+nextUp,-0x1.8e1f9722cb3eap-4,-0x1.8e1f9722cb3ebp-4
+nextUp,-0x1.f348e4e4a0a9fp-3,-0x1.f348e4e4a0aap-3
+nextUp,-0x1.4b1fa0a51eb9ap-3,-0x1.4b1fa0a51eb9bp-3
+nextUp,0x1.a428c1153bc54p2,0x1.a428c1153bc53p2
+nextUp,0x1.550447afd1e9cp-2,0x1.550447afd1e9bp-2
+nextUp,0x1.88f5e56cea93dp-1,0x1.88f5e56cea93cp-1
+nextUp,-0x1.49784bda32a1ep0,-0x1.49784bda32a1fp0
+nextUp,-0x1.ea3924a7ff3d9p1,-0x1.ea3924a7ff3dap1
+nextUp,-0x1.2fedfee49a714p-1,-0x1.2fedfee49a715p-1
+nextUp,0x1.592aad0aca4d9p0,0x1.592aad0aca4d8p0
+nextUp,-0x1.01545a95f248bp-2,-0x1.01545a95f248cp-2
+nextUp,0x1.764e065a3531fp-5,0x1.764e065a3531ep-5
+nextUp,0x1.7c608d2ea5e87p0,0x1.7c608d2ea5e86p0
+nextAfter,0x1.be08ed06ae399p-1,0x1.be08ed06ae39ap-1,-0x1.feeeaeefa83a6p0
+nextAfter,-0x1.1558e1e8299b7p0,-0x1.1558e1e8299b8p0,0x1.60d227f2f9e01p0
+nextAfter,0x1.912a35080f8b2p1,0x1.912a35080f8b3p1,-0x1.88072eb78a283p-2
+nextAfter,-0x1.e23dcc6153801p-1,-0x1.e23dcc6153802p-1,0x1.3bfd03c91e4ep8
+nextAfter,-0x1.122410b658edcp4,-0x1.122410b658eddp4,-0x1.35494eb6d5691p0
+nextAfter,-0x1.69355b8af8cd6p-1,-0x1.69355b8af8cd5p-1,-0x1.f0006d9d37145p-1
+nextAfter,-0x1.32a0dd3b6dd81p4,-0x1.32a0dd3b6dd82p4,-0x1.df3a32573fc8bp-2
+nextAfter,-0x1.6f6ec240848bfp-2,-0x1.6f6ec240848cp-2,-0x1.668e7e853506ep-2
+nextAfter,-0x1.81169faed0f51p-1,-0x1.81169faed0f52p-1,0x1.77d54e6483199p-1
+nextAfter,0x1.2d8f948b56dd7p4,0x1.2d8f948b56dd8p4,-0x1.d02d0fde59b9p1
+nextAfter,0x1.364bb6648481bp0,0x1.364bb6648481cp0,0x1.a679f94159201p-1
+nextAfter,-0x1.2ed1480b21aa2p-2,-0x1.2ed1480b21aa1p-2,-0x1.a995b18a896aep0
+nextAfter,0x1.b340ca4d97a4p-1,0x1.b340ca4d97a41p-1,-0x1.8ab2eb2634cf2p0
+nextAfter,0x1.eaa2ef7dbb9ep-1,0x1.eaa2ef7dbb9dfp-1,0x1.4dc94628ade56p0
+nextAfter,-0x1.09a5110d0e06dp0,-0x1.09a5110d0e06cp0,-0x1.2151d458f1cc9p0
+nextAfter,0x1.60da362a6212cp0,0x1.60da362a6212bp0,0x1.967dfbf52867bp0
+nextAfter,-0x1.c4e39b3bd6527p-1,-0x1.c4e39b3bd6528p-1,0x1.56333202bfbf1p-1
+nextAfter,0x1.d5a570731850ap4,0x1.d5a570731850bp4,-0x1.02688722f3b3fp0
+nextAfter,-0x1.97187568c9e9bp-1,-0x1.97187568c9e9ap-1,-0x1.81e2e09c8a0b1p2
+nextAfter,-0x1.7b2339123d502p-1,-0x1.7b2339123d503p-1,0x1.71b783b0efbfdp1
+nextAfter,0x1.7c4855534b564p1,0x1.7c4855534b565p1,-0x1.4e4cf60d4c8bfp0
+nextAfter,0x1.8bc32d4fd64f9p-1,0x1.8bc32d4fd64fap-1,-0x1.82480521fb705p0
+nextAfter,-0x1.2854a547967d3p3,-0x1.2854a547967d4p3,0x1.758478347d297p-3
+nextAfter,0x1.805683c6f76abp-1,0x1.805683c6f76aap-1,0x1.130156800e03p0
+nextAfter,-0x1.18ef725ab9968p-4,-0x1.18ef725ab9967p-4,-0x1.f146ef18a8022p-2
+nextAfter,-0x1.1f99b1d1c8feep-1,-0x1.1f99b1d1c8fefp-1,0x1.4ced4a2f389e2p-1
+nextAfter,-0x1.2611251b5806dp-2,-0x1.2611251b5806cp-2,-0x1.45f32769bed38p0
+nextAfter,-0x1.019e9cda4d56bp1,-0x1.019e9cda4d56cp1,-0x1.f103c160f70d1p-4
+nextAfter,-0x1.4bc4d28d6cdb6p2,-0x1.4bc4d28d6cdb7p2,0x1.61d7ef134d991p-1
+nextAfter,-0x1.67d2a760f5a3ap-6,-0x1.67d2a760f5a39p-6,-0x1.8c6752ff63432p-4
+nextAfter,-0x1.ab515f69190d8p2,-0x1.ab515f69190d9p2,-0x1.d72aae7ba1c68p-1
+nextAfter,-0x1.be2206d553e09p-2,-0x1.be2206d553e08p-2,-0x1.1060952b96b9ep-1
+nextAfter,0x1.cf365b29af936p-2,0x1.cf365b29af937p-2,-0x1.d288d17edddcp3
+nextAfter,-0x1.9a8387254ff5p1,-0x1.9a8387254ff51p1,0x1.d887ffbf1c225p0
+nextAfter,-0x1.d591a4ef45463p0,-0x1.d591a4ef45464p0,0x1.2248bba3318f3p0
+nextAfter,0x1.c5f0fdeba15bep-2,0x1.c5f0fdeba15bdp-2,0x1.2d4ae33b96f28p1
+nextAfter,0x1.12b003b9459cep-1,0x1.12b003b9459cfp-1,0x1.00ce7e72b7671p-1
+nextAfter,0x1.f5c5f4d5d62b7p-1,0x1.f5c5f4d5d62b8p-1,-0x1.00126d22c88dep-1
+nextAfter,0x1.10b04f432546cp0,0x1.10b04f432546dp0,-0x1.2cf01d09a9d1cp-1
+nextAfter,-0x1.98cdc00c06459p-1,-0x1.98cdc00c0645ap-1,0x1.b940443f519cdp0
+nextAfter,-0x1.bac06bffc30cdp1,-0x1.bac06bffc30cep1,-0x1.343aa5170ae4ep0
+nextAfter,0x1.150e265344e05p3,0x1.150e265344e06p3,-0x1.75b6356e210f8p-1
+nextAfter,0x1.d497e81b6cfa6p0,0x1.d497e81b6cfa7p0,0x1.9c6a2c4745f4ap-3
+nextAfter,0x1.5c7ac51d66174p-3,0x1.5c7ac51d66173p-3,0x1.cb7f5aec6eeb4p-2
+nextAfter,0x1.2ff8ab2a9ad62p0,0x1.2ff8ab2a9ad63p0,0x1.b1e04ed2de4e2p-1
+nextAfter,-0x1.04f992ba0eb58p0,-0x1.04f992ba0eb59p0,0x1.983e7b8bb7799p-1
+nextAfter,0x1.24a2da8478553p1,0x1.24a2da8478554p1,-0x1.243234bb62d2cp-2
+nextAfter,-0x1.85ee4008ad957p-2,-0x1.85ee4008ad958p-2,0x1.a5c5ca534bde7p0
+nextAfter,-0x1.997b182a9bb8p-3,-0x1.997b182a9bb7fp-3,-0x1.7889b32f872afp1
+nextAfter,0x1.efd864156ce0ep1,0x1.efd864156ce0fp1,-0x1.aa95787fc93edp1
+nextAfter,-0x1.9df023878d598p-1,-0x1.9df023878d599p-1,-0x1.2f73e50521bebp-2
+nextAfter,0x1.e72c1c9dcbedcp-3,0x1.e72c1c9dcbedbp-3,0x1.60971ac27b339p-2
+nextAfter,0x1.429a3e120ceaap0,0x1.429a3e120ceabp0,-0x1.0eb1e8536fe8bp0
+nextAfter,0x1.22e87863e519bp1,0x1.22e87863e519cp1,0x1.c6edc845c23d7p-1
+nextAfter,-0x1.b28da712af136p-1,-0x1.b28da712af137p-1,0x1.3e7c56007b11cp0
+nextAfter,0x1.34fa489be89c5p1,0x1.34fa489be89c6p1,-0x1.40a0c5e9d0fap-2
+nextAfter,0x1.19fcb20977287p3,0x1.19fcb20977288p3,-0x1.d943548d5f4b3p-5
+nextAfter,-0x1.817d9e10d3c75p1,-0x1.817d9e10d3c76p1,0x1.0d9e5aa41b3bdp2
+nextAfter,-0x1.24f917bbea9cp1,-0x1.24f917bbea9bfp1,-0x1.17908c48308f2p3
+nextAfter,-0x1.3285535c65036p0,-0x1.3285535c65035p0,-0x1.67bf9e6bd0e81p2
+nextAfter,-0x1.b83b7791e0baap0,-0x1.b83b7791e0babp0,-0x1.83b535ef83ff4p-1
+nextAfter,0x1.9125f81a5384cp-2,0x1.9125f81a5384bp-2,0x1.3b06893bb2556p0
+nextAfter,0x1.ad2b9aebd79bdp-1,0x1.ad2b9aebd79bep-1,-0x1.6300c36f4ea11p1
+nextAfter,0x1.2536e7ab2f17ep-2,0x1.2536e7ab2f17fp-2,0x1.625c3899e4f1dp-3
+nextAfter,-0x1.cb1c17d6292edp0,-0x1.cb1c17d6292eep0,0x1.402ddf503a101p0
+nextAfter,0x1.022c5ff67e8c5p0,0x1.022c5ff67e8c6p0,-0x1.ee13a25f9dcb4p3
+nextAfter,0x1.28eddab43c629p-2,0x1.28eddab43c628p-2,0x1.882dfc92fb49ap-1
+nextAfter,-0x1.01028dbd448d3p1,-0x1.01028dbd448d4p1,0x1.e9e56cfed0b34p0
+nextAfter,-0x1.5948348da9d86p-3,-0x1.5948348da9d87p-3,0x1.187bcbf7e8822p0
+nextAfter,0x1.6569c14304536p2,0x1.6569c14304537p2,-0x1.5054778b7a41fp-4
+nextAfter,-0x1.31541348909dfp2,-0x1.31541348909dep2,-0x1.846247c90221dp6
+nextAfter,-0x1.161c5cb703094p-3,-0x1.161c5cb703095p-3,0x1.f5541aff83618p1
+nextAfter,0x1.4beb4cad04695p0,0x1.4beb4cad04696p0,-0x1.91ac38ba89d5p0
+nextAfter,0x1.63c948150dd55p1,0x1.63c948150dd56p1,0x1.2dec1beb8af59p0
+nextAfter,0x1.98396629159cap-2,0x1.98396629159cbp-2,-0x1.9a25f676f5ffdp3
+nextAfter,0x1.a2e4939826476p2,0x1.a2e4939826477p2,0x1.3811e8ce43d01p0
+nextAfter,0x1.cf91f1698bbbap0,0x1.cf91f1698bbbbp0,-0x1.e036c0ca70cc9p-1
+nextAfter,0x1.0197750c62814p1,0x1.0197750c62815p1,0x1.8785e6aa38b3p-1
+nextAfter,0x1.2604374abf14ap0,0x1.2604374abf14bp0,-0x1.de65dc822a41ap-1
+nextAfter,0x1.4179ba5ebf2cp0,0x1.4179ba5ebf2c1p0,-0x1.9282734f2c477p5
+nextAfter,-0x1.9ad34119967d5p-1,-0x1.9ad34119967d6p-1,0x1.1587b953f681ep4
+nextAfter,0x1.9e6e7f25dc222p1,0x1.9e6e7f25dc223p1,-0x1.c2b2217411099p-1
+nextAfter,0x1.ae9e76e403cacp-1,0x1.ae9e76e403cadp-1,0x1.4c8dee18dd07p-7
+nextAfter,-0x1.11b2b9b348b5ep0,-0x1.11b2b9b348b5fp0,0x1.54d5f0bfc3e0fp0
+nextAfter,-0x1.1ba62c98dd46ap5,-0x1.1ba62c98dd46bp5,-0x1.e248655bfa8e2p-3
+nextAfter,0x1.053c6ed019c3fp0,0x1.053c6ed019c3ep0,0x1.741b833ba4264p0
+nextAfter,0x1.36c6119693a9fp0,0x1.36c6119693aap0,0x1.271cd019886ep0
+nextAfter,-0x1.14a41a276793ap-1,-0x1.14a41a276793bp-1,0x1.700723f91afc5p1
+nextAfter,0x1.0813380b99a9ap-1,0x1.0813380b99a9bp-1,-0x1.7c6622ee9a4fdp-1
+nextAfter,0x1.562bd1efcce1bp1,0x1.562bd1efcce1cp1,-0x1.0607dbc96d55ep3
+nextAfter,-0x1.90914d5da476ep0,-0x1.90914d5da476fp0,0x1.b5db24cebb4b2p-1
+nextAfter,-0x1.ab9eec55c7e3bp-1,-0x1.ab9eec55c7e3ap-1,-0x1.8cc010f6eb178p0
+nextAfter,0x1.2e679cc6e7224p0,0x1.2e679cc6e7225p0,0x1.30b5eb876dd6ep-1
+nextAfter,-0x1.112d5a8018aeap0,-0x1.112d5a8018aebp0,-0x1.d403dacfe3de2p-3
+nextAfter,-0x1.661c3fd6e470cp-4,-0x1.661c3fd6e470bp-4,-0x1.0b168f2c6b6ddp-2
+nextAfter,0x1.d209cbe3b1233p-1,0x1.d209cbe3b1232p-1,0x1.9fbf1b70821b9p1
+nextAfter,-0x1.14389111cc836p0,-0x1.14389111cc835p0,-0x1.2c67f46aa3c71p6
+nextAfter,0x1.393e6502546a6p1,0x1.393e6502546a7p1,-0x1.379ba570db078p0
+nextAfter,-0x1.ed6ce6384ef4ep2,-0x1.ed6ce6384ef4fp2,-0x1.37ac832cc3709p2
+nextAfter,0x1.73cbb8b795d61p4,0x1.73cbb8b795d62p4,0x1.8617316b1a779p-1
+nextAfter,0x1.3b2fa2e6c5bccp-1,0x1.3b2fa2e6c5bcdp-1,0x1.0c5acf0887cb2p-3
+nextAfter,-0x1.a81a4e1f5fd2dp1,-0x1.a81a4e1f5fd2ep1,0x1.72a39cece6988p-7
+nextAfter,-0x1.b47b120119042p-4,-0x1.b47b120119043p-4,0x1.0681dd0520a87p1
+nextAfter,0x1.c922bcbf67df4p-2,0x1.c922bcbf67df3p-2,0x1.1aac0d1be7f1p0
+nextAfter,0x1.119a9e8c2e15dp-1,0x1.119a9e8c2e15ep-1,-0x1.3e830aba61194p6
+nextAfter,-0x1.b5fde7070ac02p-5,-0x1.b5fde7070ac01p-5,-0x1.1451b0a839408p-1
+nextAfter,-0x1.411bb9b2b7d27p0,-0x1.411bb9b2b7d28p0,0x1.ed46666675a55p-1
+nextAfter,0x1.38ea05849874bp-1,0x1.38ea05849874cp-1,-0x1.fb18ec8f0c20cp-2
+nextAfter,-0x1.1534f39d7e135p-1,-0x1.1534f39d7e136p-1,0x1.78a4eedfaf3c4p0
+nextAfter,0x1.d8514ada63677p-1,0x1.d8514ada63676p-1,0x1.a4ba56fb5e95bp5
+nextAfter,-0x1.d2465e495e8f7p0,-0x1.d2465e495e8f8p0,0x1.2c92fdd2e8d32p0
+nextAfter,-0x1.86dc8707e63aap-1,-0x1.86dc8707e63abp-1,-0x1.2587435604f05p-2
+nextAfter,0x1.a723492cee1f4p0,0x1.a723492cee1f5p0,-0x1.47acb72c77762p-1
+nextAfter,0x1.8a4dc1e79fb62p-1,0x1.8a4dc1e79fb63p-1,0x1.1d2349af00cebp-1
+nextAfter,0x1.ad536251cf312p1,0x1.ad536251cf313p1,-0x1.4d0fff627210ep0
+nextAfter,-0x1.ef00c43645a3p-2,-0x1.ef00c43645a2fp-2,-0x1.5736c1d77de5bp2
+nextAfter,0x1.03558e0a72a2bp1,0x1.03558e0a72a2cp1,-0x1.8bb3ee5723bd9p0
+nextAfter,-0x1.059903c241cfbp0,-0x1.059903c241cfcp0,-0x1.959e8b56b89dbp-1
+nextAfter,-0x1.58ea3f0f2a56fp0,-0x1.58ea3f0f2a57p0,-0x1.50340dd6f0845p-3
+nextAfter,0x1.4882208f0cceep2,0x1.4882208f0ccefp2,-0x1.42e1e171eb0b6p2
+nextAfter,-0x1.3ba88c9df1697p-3,-0x1.3ba88c9df1696p-3,-0x1.8e04ae862d44ep2
+nextAfter,-0x1.dd5b75b8dc45dp1,-0x1.dd5b75b8dc45ep1,-0x1.648e1fc2e480bp-1
+nextAfter,-0x1.2aa6c715a1ad1p2,-0x1.2aa6c715a1ad2p2,-0x1.b30486358e2c5p1
+nextAfter,0x1.f02d719ee0e57p2,0x1.f02d719ee0e58p2,-0x1.3d4980849f152p-3
+nextAfter,-0x1.fcde0b5ea3b9fp-3,-0x1.fcde0b5ea3bap-3,-0x1.9351ec231b852p-3
+nextAfter,0x1.24eb83fa49e5cp-1,0x1.24eb83fa49e5bp-1,0x1.4a1a34417a1a2p1
+nextAfter,-0x1.036d6c4794c26p0,-0x1.036d6c4794c27p0,0x1.67aa7817a0d7p-2
+nextAfter,0x1.470a86b0f5795p1,0x1.470a86b0f5796p1,-0x1.0223f8be643e2p0
+nextAfter,-0x1.739de6b861d6p-1,-0x1.739de6b861d61p-1,0x1.81318046a727p-6
+nextAfter,-0x1.7cfdb659fff4p-1,-0x1.7cfdb659fff41p-1,0x1.f2d2d8bbddcb4p-1
+nextAfter,-0x1.862d750f0fc1fp0,-0x1.862d750f0fc2p0,-0x1.58cc5ef2f1669p-2
+nextAfter,-0x1.11344da901121p-1,-0x1.11344da90112p-1,-0x1.5a89a905652afp3
+nextAfter,0x1.5211661bc634bp-1,0x1.5211661bc634cp-1,-0x1.41aa7790f999ap1
+nextAfter,-0x1.3dd9e192b371bp1,-0x1.3dd9e192b371cp1,-0x1.0ee658dd025cp0
+nextAfter,0x1.8ccf3a1cb7e0ep-2,0x1.8ccf3a1cb7e0dp-2,0x1.190f4c5074b9fp0
+nextAfter,0x1.26aeb852f5c0fp0,0x1.26aeb852f5c1p0,-0x1.b5accc2fb8a9p-1
+nextAfter,0x1.3af5db50e71afp1,0x1.3af5db50e71bp1,0x1.b840b2022cc05p0
+nextAfter,0x1.04070e9aa96cep1,0x1.04070e9aa96cfp1,0x1.5cb117d184102p0
+nextAfter,0x1.7ee2cd94d2b95p0,0x1.7ee2cd94d2b96p0,-0x1.d681391227728p-1
+nextAfter,0x1.2486672587039p2,0x1.248667258703ap2,0x1.20e4c8a83353fp0
+nextAfter,0x1.10b25729ee664p-1,0x1.10b25729ee665p-1,-0x1.6cdfb8b3c1d2ep-3
+nextAfter,-0x1.05accfc2cd87ep-1,-0x1.05accfc2cd87fp-1,0x1.b76292642ac94p1
+nextAfter,0x1.1312882e464cdp1,0x1.1312882e464cep1,-0x1.f3b346a25174p-1
+nextAfter,-0x1.2e39389f91825p-7,-0x1.2e39389f91826p-7,0x1.31957b7ce603fp-2
+nextAfter,0x1.0404311fd38a1p0,0x1.0404311fd38ap0,0x1.db676eba6fed8p0
+nextAfter,-0x1.7744fb7dd7754p-1,-0x1.7744fb7dd7755p-1,0x1.075f2e9c47bf9p0
+nextAfter,0x1.bc1f6e00f5653p-3,0x1.bc1f6e00f5652p-3,0x1.3daa3d6afeb7cp2
+nextAfter,-0x1.c3fa1c5007a79p-2,-0x1.c3fa1c5007a78p-2,-0x1.78f60d3038c85p0
+nextAfter,0x1.8554149e7b9fap-4,0x1.8554149e7b9fbp-4,-0x1.102e3f3445a0fp-2
+nextAfter,-0x1.1c6206a0ed743p-1,-0x1.1c6206a0ed744p-1,-0x1.e74f2c15e4d54p-2
+nextAfter,-0x1.137691287d8b5p-2,-0x1.137691287d8b6p-2,0x1.06dee8d77e3d4p0
+nextAfter,0x1.5082525ceb9dp0,0x1.5082525ceb9d1p0,-0x1.27df8770d5364p0
+nextAfter,-0x1.16e8b2c8f8c5bp0,-0x1.16e8b2c8f8c5cp0,-0x1.a2ac01f652f22p-2
+nextAfter,-0x1.18c24796b1f6ep0,-0x1.18c24796b1f6fp0,0x1.090a349f4f2cp-3
+nextAfter,0x1.01faad9be063ap0,0x1.01faad9be063bp0,-0x1.701e1211a7b79p0
+nextAfter,0x1.99eb635ab89d1p-1,0x1.99eb635ab89d2p-1,-0x1.02f2bbb004abp1
+nextAfter,-0x1.c0b2ae0869a07p-4,-0x1.c0b2ae0869a08p-4,0x1.df7f53186a43ep0
+nextAfter,-0x1.b73d82e0c9a3dp0,-0x1.b73d82e0c9a3ep0,0x1.cc10ae0c5afe1p1
+nextAfter,0x1.129bd54ca61fp0,0x1.129bd54ca61f1p0,-0x1.db17ccd4a3f39p0
+nextAfter,0x1.a1146b7fbd789p-2,0x1.a1146b7fbd788p-2,0x1.996c59bfa19aap0
+nextAfter,-0x1.82335e167998fp4,-0x1.82335e167999p4,0x1.63f96ea33b812p-1
+nextAfter,0x1.27428424410acp0,0x1.27428424410abp0,0x1.7fa5a37c5990ap0
+nextAfter,-0x1.e222b0b6465ecp-2,-0x1.e222b0b6465edp-2,0x1.a0ef11dc9f2cep1
+nextAfter,-0x1.067fe1e10df97p1,-0x1.067fe1e10df98p1,0x1.4023b82c14d38p0
+nextAfter,0x1.418b7723e09edp0,0x1.418b7723e09eep0,-0x1.664ba9ba979ap-1
+nextAfter,-0x1.87080d5637d8cp-2,-0x1.87080d5637d8dp-2,0x1.4a6dd635b9104p-1
+nextAfter,-0x1.fc18e6d02940ap-1,-0x1.fc18e6d02940bp-1,-0x1.f19d7613c72abp-1
+nextAfter,0x1.d9d98db8c362dp1,0x1.d9d98db8c362ep1,-0x1.5d41c3f9a33dbp0
+nextAfter,-0x1.45b9cb3f31823p3,-0x1.45b9cb3f31824p3,0x1.603e322c512bap3
+nextAfter,-0x1.c71b747662ba7p-1,-0x1.c71b747662ba8p-1,-0x1.bab823fa2de24p-3
+nextAfter,0x1.1903f8b16baf3p-1,0x1.1903f8b16baf4p-1,-0x1.86c449048485p1
+nextAfter,0x1.2d7b9c45c61bbp1,0x1.2d7b9c45c61bcp1,0x1.754bcf7aa2cd2p-2
+nextAfter,-0x1.d121889bcf0edp-1,-0x1.d121889bcf0ecp-1,-0x1.d06b6c9d7c26ep3
+nextAfter,0x1.16cb05c6d4645p0,0x1.16cb05c6d4646p0,-0x1.e2d9919ca51f8p-1
+nextAfter,0x1.4bae2cc676e97p-2,0x1.4bae2cc676e96p-2,0x1.8212b8c75df29p-2
+nextAfter,0x1.ad92ab032b5b4p1,0x1.ad92ab032b5b5p1,-0x1.9ff12fc6dc92cp-3
+nextAfter,-0x1.f913004a6399dp1,-0x1.f913004a6399ep1,0x1.29b1616a10495p0
+nextAfter,0x1.f93514db1fcfp-5,0x1.f93514db1fcf1p-5,-0x1.5790d7e78012cp2
+nextAfter,-0x1.0a8f781a1d27ap-2,-0x1.0a8f781a1d27bp-2,0x1.1828e6ac11606p-2
+nextAfter,-0x1.f2b96848b118p0,-0x1.f2b96848b1181p0,-0x1.996c5e493b133p-3
+nextAfter,-0x1.6ae18cdc74a13p0,-0x1.6ae18cdc74a14p0,0x1.98a080c9ed305p3
+nextAfter,0x1.3d0661436de95p0,0x1.3d0661436de96p0,0x1.37e201923b73p-3
+nextAfter,0x1.f4d8d3f543b5p-3,0x1.f4d8d3f543b51p-3,-0x1.3f559c695c16fp-2
+nextAfter,-0x1.4da6088d207c9p2,-0x1.4da6088d207cap2,-0x1.2af134a1bc648p-2
+nextAfter,-0x1.3d16920744586p-2,-0x1.3d16920744587p-2,0x1.3696a5fd98068p-4
+nextAfter,0x1.c41e3a3208421p0,0x1.c41e3a3208422p0,0x1.766db3acfc398p-3
+nextAfter,0x1.861318513750bp-2,0x1.861318513750cp-2,0x1.10c6e3b329af8p-3
+nextAfter,0x1.090651142e1abp0,0x1.090651142e1acp0,-0x1.74cef95bb9b64p0
+nextAfter,0x1.a9afabf9d5443p5,0x1.a9afabf9d5444p5,0x1.d065e0ec9c193p-1
+nextAfter,-0x1.c134856a41724p-3,-0x1.c134856a41723p-3,-0x1.2452964c029f3p0
+nextAfter,-0x1.2f346c7a138c1p0,-0x1.2f346c7a138c2p0,0x1.e562ef5cbebe8p-1
+nextAfter,-0x1.52c791174a317p-2,-0x1.52c791174a318p-2,0x1.56a9ee5847c78p-2
+nextAfter,-0x1.e423e909074fap-1,-0x1.e423e909074fbp-1,-0x1.95c79cb8c6e94p-1
+nextAfter,0x1.7873f2f45fc5bp-2,0x1.7873f2f45fc5ap-2,0x1.500a588920313p1
+nextAfter,-0x1.79121493e8b55p-1,-0x1.79121493e8b56p-1,0x1.f252fbb8e02e9p0
+nextAfter,0x1.123d12f953371p-1,0x1.123d12f953372p-1,-0x1.006ee4c39945ep-1
+nextAfter,0x1.fc2f68afca109p0,0x1.fc2f68afca10ap0,0x1.ce207ceb1a883p0
+nextAfter,0x1.d430566acb85bp1,0x1.d430566acb85cp1,-0x1.71e632ff3e8c9p-2
+nextAfter,-0x1.4688d70c88797p-1,-0x1.4688d70c88798p-1,0x1.065d6da6343b4p0
+nextAfter,0x1.0f474783bacaap-1,0x1.0f474783bacabp-1,0x1.44bc0e877138dp-3
+abs,0x1.93d505df96a7bp1,-0x1.93d505df96a7bp1
+abs,0x1.772aabf17e9fap1,-0x1.772aabf17e9fap1
+abs,0x1.37482866cf6fbp0,0x1.37482866cf6fbp0
+abs,0x1.2f2d86b7d412bp0,-0x1.2f2d86b7d412bp0
+abs,0x1.1472bc84f162dp1,-0x1.1472bc84f162dp1
+abs,0x1.6f1aef4f2128fp-1,0x1.6f1aef4f2128fp-1
+abs,0x1.30f9423f14eeap0,-0x1.30f9423f14eeap0
+abs,0x1.a1c4694bb59efp-3,-0x1.a1c4694bb59efp-3
+abs,0x1.1103fecbf63fp0,-0x1.1103fecbf63fp0
+abs,0x1.2790898fcdf8ap1,-0x1.2790898fcdf8ap1
+abs,0x1.85960bf9370e4p2,-0x1.85960bf9370e4p2
+abs,0x1.f4e26ba23a8f5p-2,0x1.f4e26ba23a8f5p-2
+abs,0x1.10c18cfc2266p1,-0x1.10c18cfc2266p1
+abs,0x1.d7b107ca6e1afp3,-0x1.d7b107ca6e1afp3
+abs,0x1.ddee38e42203ep1,-0x1.ddee38e42203ep1
+abs,0x1.28da1d4f6bc26p2,-0x1.28da1d4f6bc26p2
+abs,0x1.3d5c63e8ecb65p-3,0x1.3d5c63e8ecb65p-3
+abs,0x1.3f055832d962dp2,0x1.3f055832d962dp2
+abs,0x1.1bece9ca0b776p5,-0x1.1bece9ca0b776p5
+abs,0x1.0bc00f4c3d999p-1,-0x1.0bc00f4c3d999p-1
+abs,0x1.68fd72aee66edp-2,-0x1.68fd72aee66edp-2
+abs,0x1.05123af8e5f4bp2,-0x1.05123af8e5f4bp2
+abs,0x1.ae1da006f080cp-6,0x1.ae1da006f080cp-6
+abs,0x1.90f8995fe2c91p-2,-0x1.90f8995fe2c91p-2
+abs,0x1.a87467f025ae1p-1,-0x1.a87467f025ae1p-1
+abs,0x1.e7fc319a4a286p-1,-0x1.e7fc319a4a286p-1
+abs,0x1.c93f851b2b5acp0,-0x1.c93f851b2b5acp0
+abs,0x1.103f892adf582p-1,0x1.103f892adf582p-1
+abs,0x1.6b0c4defd374p1,0x1.6b0c4defd374p1
+abs,0x1.07a14b2653758p0,0x1.07a14b2653758p0
+abs,0x1.8d534af6cd513p-2,-0x1.8d534af6cd513p-2
+abs,0x1.11d810c944e87p-4,-0x1.11d810c944e87p-4
+abs,0x1.b829be3ebdb13p-1,0x1.b829be3ebdb13p-1
+abs,0x1.fbeb13841fb27p-2,-0x1.fbeb13841fb27p-2
+abs,0x1.37d5860b925e1p-5,-0x1.37d5860b925e1p-5
+abs,0x1.3dd9a55c7b433p0,-0x1.3dd9a55c7b433p0
+abs,0x1.2bc0c7abed8a9p1,0x1.2bc0c7abed8a9p1
+abs,0x1.fd5a3d1160a29p2,0x1.fd5a3d1160a29p2
+abs,0x1.688a787f82432p-1,-0x1.688a787f82432p-1
+abs,0x1.951f0f59938e3p-3,0x1.951f0f59938e3p-3
+abs,0x1.a56f068d6f1c2p-2,-0x1.a56f068d6f1c2p-2
+abs,0x1.b734658226c62p1,0x1.b734658226c62p1
+abs,0x1.1edb19bf46cb3p-3,-0x1.1edb19bf46cb3p-3
+abs,0x1.e22fb685f7d56p-1,-0x1.e22fb685f7d56p-1
+abs,0x1.892b4e3724ad9p-1,0x1.892b4e3724ad9p-1
+abs,0x1.0ffcf5c95424cp0,-0x1.0ffcf5c95424cp0
+abs,0x1.6fd78d74ab1b4p-1,-0x1.6fd78d74ab1b4p-1
+abs,0x1.3ae03f54dd5efp5,0x1.3ae03f54dd5efp5
+abs,0x1.cc99e81a48a56p-3,0x1.cc99e81a48a56p-3
+abs,0x1.23749e32db3d7p0,0x1.23749e32db3d7p0
+abs,0x1.1a7f86b7edab4p1,-0x1.1a7f86b7edab4p1
+abs,0x1.023b9d65c66a8p0,-0x1.023b9d65c66a8p0
+abs,0x1.4a1fb6a7915fdp0,-0x1.4a1fb6a7915fdp0
+abs,0x1.af81ac251ece4p-3,-0x1.af81ac251ece4p-3
+abs,0x1.2923d510927d4p-1,-0x1.2923d510927d4p-1
+abs,0x1.4e77c7d585158p-2,0x1.4e77c7d585158p-2
+abs,0x1.f4b87199262b2p-2,0x1.f4b87199262b2p-2
+abs,0x1.18f7365dfc421p-1,-0x1.18f7365dfc421p-1
+abs,0x1.1924ecd75569p0,0x1.1924ecd75569p0
+abs,0x1.3f49e95c8e8cep0,-0x1.3f49e95c8e8cep0
+abs,0x1.2720bb83cb3a6p0,0x1.2720bb83cb3a6p0
+abs,0x1.1989d4d299b09p-2,0x1.1989d4d299b09p-2
+abs,0x1.40cce21585167p-2,0x1.40cce21585167p-2
+abs,0x1.6c17acb277c0fp-3,-0x1.6c17acb277c0fp-3
+abs,0x1.00f459acf7914p0,-0x1.00f459acf7914p0
+abs,0x1.438edcbe43ed7p-3,0x1.438edcbe43ed7p-3
+abs,0x1.bd85ef8c20593p-6,0x1.bd85ef8c20593p-6
+abs,0x1.df891eda559c8p-1,-0x1.df891eda559c8p-1
+abs,0x1.6e5b75d1137dp0,-0x1.6e5b75d1137dp0
+abs,0x1.02e678934f154p0,0x1.02e678934f154p0
+abs,0x1.d2d8c6b8d0cd8p-1,0x1.d2d8c6b8d0cd8p-1
+abs,0x1.4459aafa382f2p0,-0x1.4459aafa382f2p0
+abs,0x1.d1577c82fe71fp1,0x1.d1577c82fe71fp1
+abs,0x1.6a6fb3441e988p-1,-0x1.6a6fb3441e988p-1
+abs,0x1.3abccc514a8c2p1,0x1.3abccc514a8c2p1
+abs,0x1.55d0a948b9f51p0,-0x1.55d0a948b9f51p0
+abs,0x1.419af57d62a18p5,-0x1.419af57d62a18p5
+abs,0x1.d7374f447eb99p-1,0x1.d7374f447eb99p-1
+abs,0x1.1591ca359bf86p0,-0x1.1591ca359bf86p0
+abs,0x1.56227bd3b5c0ep0,0x1.56227bd3b5c0ep0
+abs,0x1.0d669e52d26eep0,0x1.0d669e52d26eep0
+abs,0x1.55967a2c5f14ep-1,0x1.55967a2c5f14ep-1
+abs,0x1.21c92c1da676ap-2,0x1.21c92c1da676ap-2
+abs,0x1.fa1f74f8ccfap-6,0x1.fa1f74f8ccfap-6
+abs,0x1.12f3cceec5f58p4,-0x1.12f3cceec5f58p4
+abs,0x1.f79f3804c644ep-2,0x1.f79f3804c644ep-2
+abs,0x1.077734a841ac4p0,0x1.077734a841ac4p0
+abs,0x1.6eb70a69e7edbp-7,-0x1.6eb70a69e7edbp-7
+abs,0x1.7b1acb6262a38p-5,0x1.7b1acb6262a38p-5
+abs,0x1.26bf90d99bad7p3,0x1.26bf90d99bad7p3
+abs,0x1.15e178c6e9cp-3,0x1.15e178c6e9cp-3
+abs,0x1.3db9d902c913dp-1,-0x1.3db9d902c913dp-1
+abs,0x1.5dc144017990dp2,0x1.5dc144017990dp2
+abs,0x1.57c20767d2d27p0,0x1.57c20767d2d27p0
+abs,0x1.51d561635d354p-1,-0x1.51d561635d354p-1
+abs,0x1.0767340df1842p-4,-0x1.0767340df1842p-4
+abs,0x1.6fe0b7cce7cacp-2,0x1.6fe0b7cce7cacp-2
+abs,0x1.b6cd599938293p1,0x1.b6cd599938293p1
+abs,0x1.6f4f9e1225456p0,0x1.6f4f9e1225456p0
+abs,0x1.e7fa55fb7eccep2,0x1.e7fa55fb7eccep2
+abs,0x1.e90530c032792p-1,-0x1.e90530c032792p-1
+abs,0x1.aede143746faap-2,0x1.aede143746faap-2
+abs,0x1.6969e23784517p-6,-0x1.6969e23784517p-6
+abs,0x1.28e79aec5c026p3,-0x1.28e79aec5c026p3
+abs,0x1.ce037c05e44c8p3,-0x1.ce037c05e44c8p3
+abs,0x1.9ceb675a53092p0,0x1.9ceb675a53092p0
+abs,0x1.e9100a74f2906p-3,-0x1.e9100a74f2906p-3
+abs,0x1.2e45cd1f857cbp0,0x1.2e45cd1f857cbp0
+abs,0x1.2fc7655c2a88cp0,-0x1.2fc7655c2a88cp0
+abs,0x1.f41aa97894034p-2,-0x1.f41aa97894034p-2
+abs,0x1.8f78641653a81p0,0x1.8f78641653a81p0
+abs,0x1.c891dfa01be47p-1,-0x1.c891dfa01be47p-1
+abs,0x1.14ada2fcadc78p0,-0x1.14ada2fcadc78p0
+abs,0x1.61ff113bad7cap-2,0x1.61ff113bad7cap-2
+abs,0x1.fe4f83a15e2bp0,0x1.fe4f83a15e2bp0
+abs,0x1.abf03b3e3555dp0,-0x1.abf03b3e3555dp0
+abs,0x1.36aeceb0a212fp2,0x1.36aeceb0a212fp2
+abs,0x1.4fd78714a7b1ap-1,0x1.4fd78714a7b1ap-1
+abs,0x1.b44cc28a57d79p-3,-0x1.b44cc28a57d79p-3
+abs,0x1.403f7b6e94691p-1,-0x1.403f7b6e94691p-1
+abs,0x1.1a3cf368dc818p-4,0x1.1a3cf368dc818p-4
+abs,0x1.e0927ac119806p-2,0x1.e0927ac119806p-2
+abs,0x1.19cdadc198e92p3,0x1.19cdadc198e92p3
+abs,0x1.e79c9a1248809p-1,-0x1.e79c9a1248809p-1
+abs,0x1.54e193436987ap-3,0x1.54e193436987ap-3
+abs,0x1.693883c2944e3p-1,0x1.693883c2944e3p-1
+abs,0x1.1610075970857p0,-0x1.1610075970857p0
+abs,0x1.ffd1d6b52e1f3p-1,-0x1.ffd1d6b52e1f3p-1
+abs,0x1.8e440475d4b95p0,-0x1.8e440475d4b95p0
+abs,0x1.3458e2df37c7ap3,0x1.3458e2df37c7ap3
+abs,0x1.5296b97c17ad7p-1,-0x1.5296b97c17ad7p-1
+abs,0x1.7bd42777c3a3cp0,-0x1.7bd42777c3a3cp0
+abs,0x1.f4011e1c00b13p-1,0x1.f4011e1c00b13p-1
+abs,0x1.effdb5c5f6168p1,0x1.effdb5c5f6168p1
+abs,0x1.106cfc6aa32dbp-1,-0x1.106cfc6aa32dbp-1
+abs,0x1.0891330243a0bp0,-0x1.0891330243a0bp0
+abs,0x1.2bb3ae2cd64ccp0,0x1.2bb3ae2cd64ccp0
+abs,0x1.be9ff1ff5cfbp-5,-0x1.be9ff1ff5cfbp-5
+abs,0x1.08f773894eb8bp1,-0x1.08f773894eb8bp1
+abs,0x1.c7b5126250ef1p0,0x1.c7b5126250ef1p0
+abs,0x1.5b72114574e27p-2,-0x1.5b72114574e27p-2
+abs,0x1.32da8c745294p1,0x1.32da8c745294p1
+abs,0x1.cba8780008dcbp-2,0x1.cba8780008dcbp-2
+abs,0x1.186280b392bep4,0x1.186280b392bep4
+abs,0x1.8b8c0931b034cp0,-0x1.8b8c0931b034cp0
+abs,0x1.5fa67dd961167p-1,-0x1.5fa67dd961167p-1
+abs,0x1.551e21d78f0d4p-1,0x1.551e21d78f0d4p-1
+abs,0x1.22b4cdfbcb362p2,0x1.22b4cdfbcb362p2
+abs,0x1.ca225fdeac97fp-4,0x1.ca225fdeac97fp-4
+abs,0x1.0b0315413a0adp-1,0x1.0b0315413a0adp-1
+abs,0x1.ab4f4dc47ce3dp-3,-0x1.ab4f4dc47ce3dp-3
+abs,0x1.459687e380122p-1,0x1.459687e380122p-1
+abs,0x1.2f865e72c5265p0,-0x1.2f865e72c5265p0
+abs,0x1.34f6f6cb1934ep0,0x1.34f6f6cb1934ep0
+abs,0x1.432e98ef925b8p0,-0x1.432e98ef925b8p0
+abs,0x1.030bc46593191p1,0x1.030bc46593191p1
+abs,0x1.b98a6750454a2p1,-0x1.b98a6750454a2p1
+abs,0x1.8c7a3a12eee03p-1,-0x1.8c7a3a12eee03p-1
+abs,0x1.fe3058a015c36p0,0x1.fe3058a015c36p0
+abs,0x1.4d5d66f59a092p2,-0x1.4d5d66f59a092p2
+abs,0x1.74fcf42a3e1e6p-2,-0x1.74fcf42a3e1e6p-2
+abs,0x1.65ed78fde4a9fp-1,0x1.65ed78fde4a9fp-1
+abs,0x1.d6ad78f43f9fp-2,-0x1.d6ad78f43f9fp-2
+abs,0x1.1bf0d35c15f61p0,-0x1.1bf0d35c15f61p0
+abs,0x1.c234de2271c65p-1,-0x1.c234de2271c65p-1
+abs,0x1.a7ad8ccd0f414p-1,-0x1.a7ad8ccd0f414p-1
+abs,0x1.b91cb0c0fa85ep-1,0x1.b91cb0c0fa85ep-1
+abs,0x1.121ac693ebb86p-3,0x1.121ac693ebb86p-3
+abs,0x1.774634c5bc94fp1,0x1.774634c5bc94fp1
+abs,0x1.23736fad28ac2p0,-0x1.23736fad28ac2p0
+abs,0x1.16dcf13a36185p0,-0x1.16dcf13a36185p0
+abs,0x1.82f85e5afa85ap-1,0x1.82f85e5afa85ap-1
+abs,0x1.895fc8b8eacc6p-1,0x1.895fc8b8eacc6p-1
+abs,0x1.2117248907393p-3,-0x1.2117248907393p-3
+abs,0x1.f1f1146df8bfep-1,-0x1.f1f1146df8bfep-1
+abs,0x1.4d08b68590db6p1,0x1.4d08b68590db6p1
+abs,0x1.0c2eedacd78ecp2,-0x1.0c2eedacd78ecp2
+abs,0x1.04ff93904e7a1p0,0x1.04ff93904e7a1p0
+abs,0x1.52aea1019dbc7p0,0x1.52aea1019dbc7p0
+abs,0x1.49086e1eb7f06p2,0x1.49086e1eb7f06p2
+abs,0x1.0b51b71c9c682p0,-0x1.0b51b71c9c682p0
+abs,0x1.3200aefc70fc2p-2,0x1.3200aefc70fc2p-2
+abs,0x1.e2e55f712f1adp-2,0x1.e2e55f712f1adp-2
+abs,0x1.5ea7722f6926cp-1,-0x1.5ea7722f6926cp-1
+abs,0x1.605dda7bbb498p-3,0x1.605dda7bbb498p-3
+abs,0x1.f5e9671f15694p-4,0x1.f5e9671f15694p-4
+abs,0x1.4f51d4031a0dp1,0x1.4f51d4031a0dp1
+abs,0x1.9f16ddc8cc68p-1,-0x1.9f16ddc8cc68p-1
+abs,0x1.da1e2e2f3ba9ap1,-0x1.da1e2e2f3ba9ap1
+abs,0x1.3e8a3a1ab480dp0,0x1.3e8a3a1ab480dp0
+abs,0x1.38e94bfc0c46ep1,0x1.38e94bfc0c46ep1
+abs,0x1.85788c2b568c8p0,0x1.85788c2b568c8p0
+abs,0x1.3f840392c269p0,-0x1.3f840392c269p0
+abs,0x1.cd26590ce463ap-7,-0x1.cd26590ce463ap-7
+abs,0x1.5e41a655a608ep-3,0x1.5e41a655a608ep-3
+abs,0x1.aa8028d9180efp0,-0x1.aa8028d9180efp0
+abs,0x1.11f51d15d857fp0,-0x1.11f51d15d857fp0
+abs,0x1.672f3ae9686cp0,-0x1.672f3ae9686cp0
+abs,0x1.89d73545edf5ap-2,0x1.89d73545edf5ap-2
+abs,0x1.152d198dcbd0ep2,0x1.152d198dcbd0ep2
+atan2,0x1.de03edb049d13p-1,0x1.8531a596c72ddp0,0x1.2010ab87fdf6dp0
+atan2,0x1.5e0006fe03d5ep0,0x1.c182771ea4203p0,0x1.733d7681a0201p-2
+atan2,0x1.b72d4f4b19fddp-4,0x1.301d6da490bbdp-2,0x1.612ec509c4202p1
+atan2,0x1.6f866e02214e2p1,0x1.2351cd82c823bp0,-0x1.06d812d67873ap2
+atan2,-0x1.0b52faa4294e2p1,-0x1.8e2cbf42c945fp-2,-0x1.c580a7fc9515bp-3
+atan2,0x1.cf2522c614544p-2,0x1.7d2347a2a0dd1p-1,0x1.883636d3453dap0
+atan2,0x1.890fffc7530aap-3,0x1.a4d671182277ep-1,0x1.0eb7570fae77p2
+atan2,0x1.a6f9610e27639p0,0x1.cefa08776cab6p-2,-0x1.2e54c0dcddf09p-5
+atan2,-0x1.5ea763bb781efp1,-0x1.fcf1dc252265dp0,-0x1.2b2e4e65498dcp2
+atan2,0x1.97705aba63a9cp0,0x1.d48096493194ap2,-0x1.374eb130f3a5p-3
+atan2,-0x1.37b0fe54312dap0,-0x1.4a82d8a0972abp0,0x1.e7762fe006ed3p-2
+atan2,0x1.55af893e47505p-2,0x1.c29ff37dccd13p-1,0x1.44feece352863p1
+atan2,0x1.e79c3c35f399bp0,0x1.752f79cfd059fp1,-0x1.02eefddee1837p0
+atan2,-0x1.985b3b66967cfp0,-0x1.02a40ab498803p8,-0x1.9313481211377p2
+atan2,0x1.ebc6d113c5787p0,0x1.47e0d187a983ep0,-0x1.df0bc161eaf0ep-2
+atan2,0x1.24643d4b7307bp0,0x1.c500dc3114dd9p0,0x1.9e0679427dbcbp-1
+atan2,0x1.8075840902432p-1,0x1.365917ef27714p0,0x1.4c8992bb60496p0
+atan2,0x1.4bca202ed05bdp1,0x1.772950cedf728p-1,-0x1.324df7fca4f85p0
+atan2,-0x1.8a7ecc4cdab06p1,-0x1.5b61bc78e19a7p-3,-0x1.6bdd688222debp1
+atan2,-0x1.7dfc6760ba829p0,-0x1.6468153072616p0,0x1.c181fa014bbffp-4
+atan2,0x1.067687fca9579p1,0x1.a106a730216ffp-2,-0x1.b1e4ecbdc6b6dp-3
+atan2,-0x1.aaf01c5d7b691p0,-0x1.9253b2abd0f6cp2,-0x1.38f60891bbacbp-1
+atan2,0x1.c60716ff8b4e5p0,0x1.ded02fca4aaccp1,-0x1.89b9e49345cbcp-1
+atan2,0x1.d589c41922022p0,0x1.0456351e08dfdp2,-0x1.18beb9570a313p0
+atan2,0x1.6dea06954837bp-2,0x1.849cec7964a43p-2,0x1.043565f785b81p0
+atan2,0x1.d1b8b75ca0805p0,0x1.bfa160b08cdf7p-1,-0x1.c632f73f14dfcp-3
+atan2,0x1.a498ca4fb0bc5p-2,0x1.010d5c02134edp0,0x1.271dbba8fa0abp1
+atan2,0x1.cba2802a80af5p-2,0x1.3feeced139a2dp-1,0x1.4c1ebc6c3c97p0
+atan2,-0x1.6bb2871a033dap1,-0x1.e2f34e0f5f988p-1,-0x1.8606a5e36c881p1
+atan2,0x1.1e2c1bae7d344p-2,0x1.1fca5abfa28d3p-3,0x1.f56b92435c166p-2
+atan2,-0x1.2d97b06159e9ap0,-0x1.95ad099b4ffbap-1,0x1.501303e00fa1dp-2
+atan2,0x1.709095033bc0ap1,0x1.8b8012a0223bap-2,-0x1.7071fcced3a65p0
+atan2,-0x1.0e6ae461133f2p1,-0x1.2b5cc52a3cf34p0,-0x1.6864a45b28908p-1
+atan2,-0x1.30b6cec1fc3f2p0,-0x1.acf7dd9105681p1,0x1.572cd3952f421p0
+atan2,0x1.370509592bb79p0,0x1.1777716e04b44p-1,0x1.9f833a4b4c096p-3
+atan2,0x1.7de31c93532acp1,0x1.5ff6c65ef376ap-2,-0x1.13f48c186e1c8p1
+atan2,0x1.ae9074154b5eap-3,0x1.3b0d32e25bbafp-1,0x1.711a84da4c808p1
+atan2,0x1.d665ce6a0df3cp-2,0x1.f00bdaf915ee6p-2,0x1.f564b5ae2ab47p-1
+atan2,-0x1.24546839d5b5fp1,-0x1.6bcd13101c4d2p-2,-0x1.3a9e6f6d70c5cp-2
+atan2,0x1.b0b4973d0e301p-3,0x1.89b90df4f741bp-2,0x1.caebbbdbb7369p0
+atan2,0x1.01f719228a78p1,0x1.ce7c2ec5315c8p-1,-0x1.b89e4d2564028p-2
+atan2,-0x1.789052f3b2dc7p0,-0x1.3a30f0aabfdebp1,0x1.f798c6ae52b61p-3
+atan2,-0x1.2d3cbab22d24p-2,-0x1.507136d9a808p0,0x1.159f593069f8dp2
+atan2,-0x1.a917d9f1c7243p0,-0x1.e5f48d5274b6cp-1,-0x1.5dc0db2921ab6p-4
+atan2,0x1.7fde965bf75f6p1,0x1.1879ea9a3f83ap-4,-0x1.e85693e92bd12p-2
+atan2,-0x1.37321703b449ep-1,-0x1.5678e01a6da7ap0,0x1.ec4d3620d0bdep0
+atan2,-0x1.48851ef932712p0,-0x1.8d2218d992ac1p-1,0x1.d5be246627fdp-3
+atan2,0x1.609789f81f64dp0,0x1.54a5a5ed0a069p3,0x1.0afa9ca5db82ap1
+atan2,0x1.821ae4a866496p1,0x1.79b65fcbdac1fp-1,-0x1.774c1b6003141p2
+atan2,0x1.14a8aa61cb474p-2,0x1.62d5ae5a96817p-1,0x1.404f660747c32p1
+atan2,0x1.72c718376a293p0,0x1.6e7770b244647p2,0x1.68c890c719b54p-1
+atan2,0x1.8f2e449945382p1,0x1.e442bbdf44b94p-2,-0x1.49056da0024d3p4
+atan2,0x1.40ff4e69cabaap0,0x1.b985a770343b2p0,0x1.2198e0b9d8d86p-1
+atan2,-0x1.e2b69f2c7b8a5p-13,-0x1.ee045e5e8d48bp-4,0x1.05fea7c172b9ap9
+atan2,-0x1.62313f6cb77bp0,-0x1.9873918570a35p0,0x1.3586d6eb4034p-2
+atan2,0x1.a210376fa870cp-1,0x1.958578988276p-1,0x1.7d06dbbc83cfcp-1
+atan2,0x1.8c129ae734679p0,0x1.9adca1b305d52p0,0x1.36d53bd11117cp-5
+atan2,-0x1.4196e5881496ap-1,-0x1.f977843e6d1d2p-1,0x1.5c03b1b1397e1p0
+atan2,0x1.c6e4a0a217f9bp-2,0x1.7a682e6a5d087p-3,0x1.8d84fdf370e1ep-2
+atan2,-0x1.17494c09f4f49p0,-0x1.a6724ea3a4c16p0,0x1.b7aeb0c75bfb7p-1
+atan2,-0x1.769ba827e371ep1,-0x1.114d061d2e95ep-2,-0x1.38edcb6d51326p0
+atan2,-0x1.888fe8d4addf5p1,-0x1.89e8bc6b0ef05p-1,-0x1.48f5709f268f7p3
+atan2,0x1.53d830906ecfp1,0x1.4c1cc00421dbap0,-0x1.39ebc36d9eb3fp1
+atan2,0x1.dff17c7821d6cp0,0x1.4ca941e6f8208p1,-0x1.a16e0565eb6b7p-1
+atan2,-0x1.5e0acc5f8fa83p-2,-0x1.01bd6aa09efd9p-1,0x1.6a30fb1f64f7dp0
+atan2,-0x1.6f33096e2714cp0,-0x1.a090328de346ap1,0x1.c9798e65adb9bp-2
+atan2,-0x1.a8eb5e1bb1255p0,-0x1.94664cc1227aep0,-0x1.20d79cf55f344p-3
+atan2,0x1.a3b503a18cc39p-1,0x1.9b54e5610ff14p-2,0x1.8001d5a6b8da1p-2
+atan2,-0x1.0fd6e19af269ep1,-0x1.6206ad4eae709p0,-0x1.b4fd0b775e25p-1
+atan2,0x1.fae70394d2c5p-4,0x1.5249bb08021cp-2,0x1.53f19d1ca151p1
+atan2,-0x1.29a0832eebf8dp0,-0x1.1c96da5e6fc3fp1,0x1.ec51a5852bfefp-1
+atan2,-0x1.7e6b861b81ef1p-1,-0x1.2a298c65321p-2,0x1.420ac5a0e085ep-2
+atan2,-0x1.742fea3c19d5bp1,-0x1.aa4dc36acc419p-1,-0x1.bf58b46f897f4p1
+atan2,0x1.078c9ce3d28bcp-1,0x1.1aab5553a169fp0,0x1.f3c3ce535d04bp0
+atan2,-0x1.4ea1d1782dbe1p-2,-0x1.1ac709ff8ecc6p0,0x1.a125f33f1e745p1
+atan2,0x1.18a1758a0aeacp-3,0x1.1b257d57e6401p-1,0x1.00ad22300d8c1p2
+atan2,-0x1.54f133eca1efep-5,-0x1.062c7be3ee3aap-2,0x1.897c055a404b6p2
+atan2,0x1.db66a72b7feb7p-1,0x1.0c2a245ff88d3p-2,0x1.9139391cabeb7p-3
+atan2,-0x1.36a51f11e0a19p1,-0x1.34d94e40c206cp0,-0x1.63f0e9f526d3dp0
+atan2,-0x1.56e0fce629779p-1,-0x1.bb76e79222ffep-2,0x1.180e60c28dd0dp-1
+atan2,0x1.1555fc07b00dp0,0x1.954dd20260f1bp0,0x1.adb8675b4478dp-1
+atan2,0x1.8242b6b8dc774p1,0x1.9a2f1c20f8cb6p-6,-0x1.9b997997aa3acp-3
+atan2,0x1.c9f77561fdda3p-1,0x1.04c5e032acc82p1,0x1.a2990c116f182p0
+atan2,0x1.06ae73edd64f8p1,0x1.afe9a377db5bbp-1,-0x1.c342047c5e69ep-2
+atan2,-0x1.0925a20bab4c3p1,-0x1.02e714ca716aap0,-0x1.1b534b24dc808p-1
+atan2,0x1.0318b83509e4ap0,0x1.53e60fb0dda16p0,0x1.a8f809c1ee6d2p-1
+atan2,-0x1.1c163bdeb02cp1,-0x1.8324618f989a3p0,-0x1.2578f25491111p0
+atan2,-0x1.509d46bb514dbp-3,-0x1.11db57a457979p-3,0x1.9cc945e5ab0e9p-1
+atan2,-0x1.273d736490657p-3,-0x1.e62a841d979dp-1,0x1.a2a03f25d4f12p2
+atan2,0x1.5d211bb9a4f16p-1,0x1.1979327f1dda2p-1,0x1.5aba887618f13p-1
+atan2,0x1.f99ef79bfe351p0,0x1.cabcf958e7b22p-1,-0x1.888bc54c3d127p-2
+atan2,-0x1.69d9687d7e301p1,-0x1.48c15fcf05e9fp-3,-0x1.f91123678c42dp-2
+atan2,-0x1.95683b903b191p0,-0x1.25b5c01517032p1,-0x1.e231fdffb84c1p-6
+atan2,-0x1.a3937ba3870a3p-1,-0x1.fdfa9b8718bbfp-2,0x1.dc587bb5598fbp-2
+atan2,0x1.d53cd872fe0b9p-4,0x1.e65900eeed15fp-4,0x1.082c408376464p0
+atan2,0x1.9b565b8da9814p0,0x1.fcff459d37763p-3,-0x1.253a8897ee4b5p-7
+atan2,0x1.4da18efc303a4p1,0x1.82ad70acbf6b7p0,-0x1.4626ca1c67ec6p1
+atan2,0x1.604db2b36a6e5p-2,0x1.ac15184e794f7p-4,0x1.2ab1717453984p-2
+atan2,0x1.2012611f36814p0,0x1.0e343be9dc285p1,0x1.02108970390f7p0
+atan2,0x1.b72104f7430a1p0,0x1.06f82022d9733p-1,-0x1.323c7773d129fp-4
+atan2,-0x1.d86db4c7e68fcp0,-0x1.15fff12ca5807p1,-0x1.394d52d5023d1p-1
+atan2,-0x1.bf6905834b3ebp0,-0x1.75abb1869d4bep2,-0x1.0b33cbeef85b1p0
+atan2,-0x1.19f27ea9add42p1,-0x1.adcf68cc0ca0bp0,-0x1.3aa4f4cda49a5p0
+atan2,0x1.1306a149435bp1,0x1.70eefafe5917p0,-0x1.e127fb7ac364dp-1
+atan2,0x1.065c279976392p-1,0x1.4d44ea2be9449p0,0x1.28378318fb1a8p1
+atan2,0x1.0b42d6b5b60d3p0,0x1.b82ba68eeaecap0,0x1.0004f4f2b9327p0
+atan2,-0x1.82e8284d431c9p1,-0x1.46ccb8a2d679ep-4,-0x1.55fec3def5839p-1
+atan2,0x1.f57bf8bd7c88dp-2,0x1.22bb569e3959ep-1,0x1.10b5b96e5ea49p0
+atan2,-0x1.63bf11e016f7dp-5,-0x1.efdc0bc4c9265p-4,0x1.649a61b038e17p1
+atan2,0x1.f108930cd5e6fp0,0x1.932ebb0529ffcp3,-0x1.39725a3cb358fp2
+atan2,0x1.81f09ceac7869p1,0x1.5fe4076ec4b1bp-2,-0x1.5a08f1681a41ap1
+atan2,-0x1.4b77647f83b03p0,-0x1.7fc8488ed5daap-3,0x1.b2cd533f2ac1ep-5
+atan2,0x1.101599c7ae0bep1,0x1.7979dcd1b104fp1,-0x1.d3ee7246ffaebp0
+atan2,-0x1.7b4853c777fbfp1,-0x1.596b976af1eb8p-1,-0x1.dec68c99aa45ap1
+atan2,-0x1.7453cfed8453fp1,-0x1.8ebf10238b687p-1,-0x1.a478b2a6f406dp1
+atan2,0x1.6142b2fc8b2c8p1,0x1.27e2fd81b5286p1,-0x1.7088c6d494f5dp2
+atan2,0x1.10cb9ed389c7ap1,0x1.b277dc0802e77p-1,-0x1.10a47abc4594bp-1
+atan2,-0x1.84f3f975b062p-1,-0x1.025d458a8188cp0,0x1.1002c8cd205d3p0
+atan2,-0x1.45988b51f4ab8p0,-0x1.e7f58fefb33f3p0,0x1.2cc049c474f57p-1
+atan2,-0x1.830ebac024c1fp1,-0x1.4045312f6bdbcp-3,-0x1.528bad6448038p0
+atan2,0x1.c8bb6ff9d42e3p0,0x1.f93e9e6e08b08p-1,-0x1.b5c332f661ca3p-3
+atan2,-0x1.465edfae23b18p1,-0x1.1f89c7d0ccc82p0,-0x1.abc2121cfab0ap0
+atan2,0x1.8565facce856ap0,0x1.d460bf318d18fp0,0x1.74d420fa2210dp-4
+atan2,0x1.0a0b88c880adap1,0x1.140ce10bdcd4cp1,-0x1.3324b090e8ee9p0
+atan2,0x1.5743b0ba8309cp-3,0x1.77d22d03e36c2p-2,0x1.15a687f77a71dp1
+atan2,-0x1.27ddefe6d9ffdp1,-0x1.149def9def705p-1,-0x1.f9d384ccbcc0bp-2
+atan2,0x1.404d2e333699ap1,0x1.989bc87d39ca8p-1,-0x1.12d6dc77dea54p0
+atan2,0x1.df721ca61dep-4,0x1.b2c02bf4a8d96p-1,0x1.ce25d8f777814p2
+atan2,-0x1.b3266f9c4939p0,-0x1.26854202382ebp2,-0x1.31a9f064ac1f9p-1
+atan2,0x1.8b84119b2494cp1,0x1.1688fb5dd5857p-4,-0x1.50e9627d3598dp0
+atan2,-0x1.f98f119fd229p0,-0x1.f3346f229d591p0,-0x1.aae318faf10a1p-1
+atan2,0x1.3983f65ece5e1p0,0x1.717c62e3fd8f4p2,0x1.0a81a9cf2bf7bp1
+atan2,-0x1.6932ebbc0a0fap0,-0x1.c92cf129a6261p1,0x1.26dbabb91199ap-1
+atan2,0x1.7a70a47a07ebep0,0x1.25cfb390c3934p1,0x1.b4281314ab214p-3
+atan2,0x1.c798a348bd1d6p0,0x1.e26ba3d7617afp0,-0x1.9907f947b4d63p-2
+atan2,-0x1.ec5187825e41bp0,-0x1.86ee51516a48ap1,-0x1.1f762d273aa95p0
+atan2,-0x1.73d313d8a95dep0,-0x1.7952cd69e1a04p-2,0x1.66f2af5e4527ap-5
+atan2,-0x1.7b64745f8ab0cp0,-0x1.5e15714a4c344p2,0x1.f2ae5421949dcp-2
+atan2,0x1.749f1ecb63879p-1,0x1.cfc73426ef23ep0,0x1.0447b54270e27p1
+atan2,-0x1.0aabe585fc8bap1,-0x1.7462ea39e2844p-1,-0x1.a31dbcb30d94bp-2
+atan2,-0x1.dd882de264022p0,-0x1.143c00f69d8fbp-1,-0x1.4f39c4340c992p-3
+atan2,-0x1.b50e6f8ffeedep0,-0x1.a8c4cc4862be3p-1,-0x1.d298460311b81p-4
+atan2,0x1.59f326f55e2p-1,0x1.c21458620b4b8p-3,0x1.18c1c5f7cbaf8p-2
+atan2,-0x1.e8638ced79c02p-1,-0x1.00a539603b877p2,0x1.6c0e1f5008171p1
+atan2,0x1.953f61e4f0744p0,0x1.0f8c3405d7a69p1,-0x1.a8243d0f95c4p-6
+atan2,-0x1.1a47bfebeeca8p1,-0x1.08ad8ea32e6d2p1,-0x1.85a2f8fd8f9afp0
+atan2,-0x1.660582e3c4a18p-2,-0x1.5d413746cc898p-2,0x1.def17c3f1dca3p-1
+atan2,-0x1.c5f468ac0cc53p0,-0x1.61793f458a773p1,-0x1.223d67c9babfap-1
+atan2,0x1.35e032a100decp1,0x1.b90c7fac94cd9p-1,-0x1.f62b796c51d15p-1
+atan2,-0x1.0d74faaea9b69p0,-0x1.126cdf0fefbdbp-1,0x1.38f65b42f19e1p-2
+atan2,-0x1.2d5bfee8358dp-4,-0x1.f21811e033cafp-4,0x1.a65bf6789b3adp0
+atan2,0x1.fead2bcbda9a7p-3,0x1.7f2398c779c02p-2,0x1.78232e66cfe1fp0
+atan2,-0x1.a8eff7b510feep0,-0x1.375321eeb9911p-3,-0x1.bd145be95394ep-7
+atan2,0x1.888bddd2168b6p1,0x1.3dd43a7b8369fp-3,-0x1.08fbe2f16fa6ep1
+atan2,0x1.89d07ec3a987dp1,0x1.4ae2b3dcfee33p-1,-0x1.3e1dcfa5a2338p3
+atan2,-0x1.04505b38996eep-2,-0x1.2da56f69e264dp0,0x1.223abfcf0e517p2
+atan2,0x1.8a68bdd90bdb3p1,0x1.ff097deb57743p-4,-0x1.08a5878452126p1
+atan2,0x1.1b492e98b09f4p1,0x1.98f1db91e4747p-2,-0x1.31fd43259db6ep-2
+atan2,-0x1.cdeca28129f61p0,-0x1.0ddb5ec777b1ep3,-0x1.00d69e4f78288p1
+atan2,-0x1.8a732af02607bp-2,-0x1.32d285280db1fp-1,0x1.7a5cd769730f5p0
+atan2,-0x1.d8e363a972f7bp-4,-0x1.53e99b8f23c3ep0,0x1.6e63b6d4cbd22p3
+atan2,0x1.50dac88f484bbp-4,0x1.74a21b041d867p-5,0x1.1a8d4f888e88bp-1
+atan2,-0x1.816dd590faa0dp-2,-0x1.9213b4b67e0f6p-2,0x1.fca66e9b5d54ap-1
+atan2,0x1.a9a5ee00ac2dap0,0x1.8bae1f4196731p2,-0x1.23b31b9f32697p-1
+atan2,-0x1.faf0ce42c982ep-3,-0x1.29eb4169cb92cp1,0x1.26b8c05863f5bp3
+atan2,-0x1.eaaa5f467858fp0,-0x1.285c4e6cdf603p4,-0x1.ab2cbbadc1ddcp2
+atan2,0x1.ff4616f547a1ep0,0x1.8f8a31e1ca847p-2,-0x1.6af7802be4411p-3
+atan2,0x1.cfc8e24b5ea9fp-3,0x1.87bfad3f0dbc1p-1,0x1.a90e8f3a59402p1
+atan2,-0x1.8c8e52931226p1,-0x1.1ccf95145909p-5,-0x1.98f596f1b4914p-1
+atan2,0x1.30b7fbf4dda28p1,0x1.e86261670c322p-3,-0x1.006b6e47fcd0bp-2
+atan2,-0x1.357969aa6c1fep-9,-0x1.73bb55f449d6ep-3,0x1.337fda2a0394cp6
+atan2,-0x1.3d8aabdd357b4p1,-0x1.a304e63201fa1p0,-0x1.0d8170f940b17p1
+atan2,0x1.53f514034b516p-1,0x1.5c7a0f825fe66p-1,0x1.bd565e2aecf06p-1
+atan2,-0x1.5537c9fb835f4p-1,-0x1.05594de0c6ab9p0,0x1.4c4d84ae99b4bp0
+atan2,0x1.91f6f316cdc95p0,0x1.0f89a40ddf756p5,0x1.59dbc42aaec81p-6
+atan2,0x1.2d38e3c622bdbp1,0x1.c1aed8b1f0143p-1,-0x1.bf160907fe663p-1
+atan2,0x1.3a0ab45adb6ecp1,0x1.dcdfaf809f942p-1,-0x1.21fe4001672c3p0
+atan2,0x1.482e04a12cf2cp1,0x1.96b5b564c76d5p-1,-0x1.37f4dc2a85229p0
+atan2,-0x1.81fa9ebfcb2afp0,-0x1.04d705862e8c4p1,0x1.078d1ec038372p-3
+atan2,-0x1.4760cd439a41p0,-0x1.88b2f42d8944ap2,0x1.d8208920c4bep0
+atan2,-0x1.8bf3a7e26c76ap1,-0x1.a5e48f83b1e79p-1,-0x1.113551b415d1ep4
+atan2,0x1.5ece1300019a2p-1,0x1.2d5d5f1151862p0,0x1.70c22c9b532dfp0
+atan2,0x1.75203047182d4p0,0x1.4d6f118d774ffp3,0x1.2f74303910affp0
+atan2,-0x1.1bbb29dcfb463p0,-0x1.0ea2cc1ee2516p-1,0x1.0dd73d3be7cb4p-2
+atan2,0x1.045677713c2f9p0,0x1.90363e597b217p0,0x1.eeff07e652f6cp-1
+atan2,0x1.59e138f72538fp0,0x1.57c714f819c95p2,0x1.3312c3f0441d2p0
+atan2,-0x1.4de5bb8a088p-1,-0x1.a9638aec111dap-3,0x1.168b6bc596bb7p-2
+atan2,-0x1.8300988d4fbbcp1,-0x1.8bdf43770c699p-5,-0x1.a0eb5ece9ec6p-2
+atan2,0x1.07ce9b0b696eap-1,0x1.080444b721de1p0,0x1.d23d1e62ebe9ap0
+atan2,0x1.8165148cf64ap1,0x1.8755b7b0e38d6p-1,-0x1.7425d5e8213fdp2
+atan2,-0x1.7dbffaedfd904p1,-0x1.656aad633ba21p-1,-0x1.164f9c7898dbfp2
+atan2,0x1.14e8210eff74p1,0x1.ebba1b0512f93p0,-0x1.4b0c862007029p0
+atan2,0x1.8586c56cb0933p1,0x1.2e545fdd7b153p2,-0x1.7ebfbbb4eba28p5
+atan2,-0x1.75153d5f09e71p1,-0x1.f184a4d2915ddp-2,-0x1.0d6304e29e117p1
+atan2,-0x1.bb77ae1fdab8dp0,-0x1.cb2a56fefe0d3p1,-0x1.2b39678ca203fp-1
+atan2,0x1.8e5a65499458cp1,0x1.2894a3902f614p-4,-0x1.3a8549dc9b0ccp1
+atan2,-0x1.b91719f497b41p-3,-0x1.df4d1dd714f07p-2,0x1.11dcbf1574eefp1
+atan2,0x1.305e7fb3b741p1,0x1.6b4faec249ebp-2,-0x1.7b6c5993b8edfp-2
+atan2,0x1.edd2c7199e7ddp0,0x1.54448cf99a1a1p1,-0x1.fd8485d86e3d1p-1
+atan2,-0x1.3401bfed63a95p0,-0x1.66e0a92ea0f2ep-2,0x1.147299409fd4cp-3
+atan,-0x1.33165704aa45cp0,-0x1.48ce7d70e6a0ap1
+atan,-0x1.de5952193ae66p-1,-0x1.5a57f5de17072p0
+atan,0x1.06f3498431431p-2,0x1.0ce2f7d413cdbp-2
+atan,0x1.09880a837be19p-1,0x1.243625fb54079p-1
+atan,0x1.2fe6d3eaa8704p-1,0x1.597506ebdf281p-1
+atan,-0x1.0fcd8b99dfc03p0,-0x1.caabf588a3cc5p0
+atan,-0x1.a49bc345118c4p-2,-0x1.bdf9ec63e50ffp-2
+atan,0x1.5ac7ec427eac8p-1,0x1.9bc23b48b72d8p-1
+atan,0x1.41945d04de0cp0,0x1.8951863009812p1
+atan,-0x1.6c74432d0e219p0,-0x1.afcb6cee7c77ap2
+atan,-0x1.41c41c994a946p-1,-0x1.741794913226p-1
+atan,-0x1.2443ef2c3806fp0,-0x1.17bc6ed44f9f3p1
+atan,0x1.1128bf0f3871cp-1,0x1.2e694c7b05c15p-1
+atan,0x1.d4698288791cap-1,0x1.4ca3b26d8d82ep0
+atan,0x1.afcc60f0bcb0ep-1,0x1.1f89a522d3316p0
+atan,0x1.6d125a9b7bb56p0,0x1.b7186b7ade84ep2
+atan,0x1.ea0dadeb6b082p-1,0x1.6b7073c21e62cp0
+atan,-0x1.78aba01034404p-3,-0x1.7cf9d37c81681p-3
+atan,-0x1.5c930372a9d6cp0,-0x1.2d7bde8a004bdp2
+atan,-0x1.6d98da8db709bp-1,-0x1.bbb3f45e04d65p-1
+atan,0x1.9829a4523d781p-1,0x1.061c755ae1857p0
+atan,-0x1.2c06abf12181cp0,-0x1.2fbf66a7eebc8p1
+atan,-0x1.34f2d200715c2p0,-0x1.50034d8a3d3b3p1
+atan,-0x1.c7fcc5d31d0a2p-2,-0x1.e8b9e81bde969p-2
+atan,-0x1.17da370518f56p0,-0x1.ee98d1470ab33p0
+atan,-0x1.4d3468cfee20ap0,-0x1.cfe9d17d70632p1
+atan,-0x1.b52fd5ded91dfp-1,-0x1.25b43aad343c1p0
+atan,-0x1.3521e834ac2acp0,-0x1.50bd7036a1a14p1
+atan,0x1.c383a281514a8p-2,0x1.e33ed607c28fep-2
+atan,0x1.0eb0e18395494p0,0x1.c606bace6103bp0
+atan,0x1.26feeb6ecedd6p-1,0x1.4ca55ad8d1706p-1
+atan,-0x1.fe2c5be73da28p-1,-0x1.8b95bd1c4cdefp0
+atan,0x1.0f98bcd9dd79dp-1,0x1.2c4eb5ee7b93fp-1
+atan,0x1.355f89cd233a4p0,0x1.51b222746e1dbp1
+atan,0x1.4abb434831bcep0,0x1.bf061660d03d2p1
+atan,0x1.353715d6ccacdp-1,0x1.613e9203ee421p-1
+atan,-0x1.eb96418ceb959p-1,-0x1.6dc2e3d405926p0
+atan,0x1.2fe249360fc78p-1,0x1.596e6aef899d8p-1
+atan,0x1.c881a53fe929bp-1,0x1.3d1a43a0ec22bp0
+atan,-0x1.926d325cac869p-1,-0x1.004d88d506e55p0
+atan,0x1.0f06eb6365d4ap-1,0x1.2b8adad3f7469p-1
+atan,-0x1.ef1f54763a778p-2,-0x1.0cd8a9c8498a9p-1
+atan,-0x1.3c8c4e149aad4p-2,-0x1.47083d40a57bep-2
+atan,-0x1.0c6e0ae142604p0,-0x1.bccc22763b743p0
+atan,-0x1.2809e19754ddcp0,-0x1.22ff391284474p1
+atan,-0x1.16c7aa436594p0,-0x1.e98fe178c5c6ep0
+atan,0x1.6aff81476fbb2p-4,0x1.6bf38e022962bp-4
+atan,0x1.4fdd199943858p0,0x1.e371388d4c39fp1
+atan,0x1.7a4bb67128b3p0,0x1.56cd60b54446ep3
+atan,-0x1.3059942eaa704p-2,-0x1.39a3e3bf39e3ep-2
+atan,-0x1.3afd7b1c0e3a4p-2,-0x1.4550f332fd795p-2
+atan,0x1.347d64811efa8p0,0x1.4e3626bfb4c66p1
+atan,-0x1.12a6812d28c97p-3,-0x1.144f0f9b4d222p-3
+atan,-0x1.bfc52ead8cf51p-1,-0x1.3242afc2d5d0bp0
+atan,-0x1.b943df8d2808dp-1,-0x1.2a78891234ae7p0
+atan,-0x1.d545f6a23e406p-1,-0x1.4dccad3454358p0
+atan,0x1.d3a6888178694p-1,0x1.4b9e1e2213afap0
+atan,-0x1.78855f59205fbp-1,-0x1.cf31b2af98fbfp-1
+atan,0x1.24fc92601a428p0,0x1.19d4fbe477393p1
+atan,0x1.36cb4173e1262p-1,0x1.639466b78c0f4p-1
+atan,-0x1.5429610212e13p0,-0x1.033c41b92f0c3p2
+atan,-0x1.6aa01d66ca951p0,-0x1.9b8135c13d607p2
+atan,0x1.7e9f911fb35b1p0,0x1.a34720e578bp3
+atan,-0x1.eb5861b0dc1aap-1,-0x1.6d64dcdac7ca9p0
+atan,0x1.3b6335e848a48p0,0x1.6b38851191959p1
+atan,0x1.9bc09f7f59a63p-1,0x1.09d075c2661e9p0
+atan,-0x1.5272e2663d8a2p-2,-0x1.5f561c854244bp-2
+atan,-0x1.5f4b029f05c7p-1,-0x1.a33e03ca2098bp-1
+atan,-0x1.65dccee7071ddp0,-0x1.6e7824e12489fp2
+atan,-0x1.4dc9067ff1774p0,-0x1.d40cebe43f5f1p1
+atan,0x1.efd23c5ce2b7p-2,0x1.0d4ad22f826e2p-1
+atan,0x1.c2ee2f5856f38p-1,0x1.362170d1b0351p0
+atan,-0x1.85dc612ef9b63p-2,-0x1.99dba0d07634p-2
+atan,0x1.ca97437ccf1e8p-4,0x1.cc8446c65c6c5p-4
+atan,0x1.1411864cf386ap-1,0x1.32594c18ceadep-1
+atan,0x1.7296c27cf33d3p0,0x1.0275bea97e23dp3
+atan,0x1.782a4d0bb9283p-4,0x1.7939f249ae61ep-4
+atan,0x1.1bb405cbc8839p0,0x1.00af2f404991cp1
+atan,-0x1.3b37b44c27275p-2,-0x1.45910de53f2b7p-2
+atan,-0x1.f18b875c89894p-1,-0x1.76f9a6aa08e08p0
+atan,-0x1.d915b11dc1407p-1,-0x1.52feed902fba7p0
+atan,0x1.a88f73a728872p-1,0x1.177b006d6a75dp0
+atan,-0x1.f3eaa84bd5d49p-3,-0x1.fe1698c27c477p-3
+atan,-0x1.0d78245ba4e99p-2,-0x1.13dde72124156p-2
+atan,0x1.54786c45385c6p-1,0x1.9177dd1ebae81p-1
+atan,-0x1.3fdfde6471406p0,-0x1.80983c9ee91edp1
+atan,-0x1.c24edb8cfd9e4p-1,-0x1.355d26b233bbp0
+atan,0x1.27e6a825ce0bep-1,0x1.4def4a28afc6cp-1
+atan,-0x1.671235f445918p-9,-0x1.671270d28f888p-9
+atan,-0x1.168af6cc8109ap-3,-0x1.1845eb7ce10dep-3
+atan,-0x1.0af38f85b3ffdp0,-0x1.b6ea28d59635fp0
+atan,-0x1.17cad0f7c3cd5p0,-0x1.ee4ff932ba75fp0
+atan,-0x1.dfa325de2bae3p-2,-0x1.030bcce52d3fp-1
+atan,0x1.9fb60472c6027p-1,0x1.0df5fe264e83ap0
+atan,0x1.4566ccb67f798p0,0x1.9e3c08443230cp1
+atan,-0x1.81c26948658ddp0,-0x1.f3ea63670b06p3
+atan,-0x1.64332a21e0951p-3,-0x1.67d5e748d5bdbp-3
+atan,-0x1.4748db7a8e569p-3,-0x1.4a1975881b88cp-3
+atan,0x1.669aeb9f7d992p0,0x1.74d92729a23bbp2
+atan,0x1.b6b04a9422536p-1,0x1.2772fb93942cfp0
+atan,-0x1.33816bb25942fp-1,-0x1.5eba0ed9aaae7p-1
+atan,0x1.4348ea6b35971p-4,0x1.43f5327378dcdp-4
+atan,-0x1.7e422af591522p0,-0x1.9b8c2286641ep3
+atan,0x1.5d78b6712df06p-1,0x1.a0355485836d6p-1
+atan,0x1.885669177868p-1,0x1.eccacb067b7adp-1
+atan,-0x1.12a0f62d61ab8p-2,-0x1.1968856cc5476p-2
+atan,-0x1.7fcd7f2f67864p0,-0x1.be5ec2f68c954p3
+atan,-0x1.849099f32d7a5p-1,-0x1.e593597e6fc7ap-1
+atan,-0x1.14a1e3eaf0c74p-1,-0x1.331d79f2731f6p-1
+atan,0x1.0584405998b0bp-1,0x1.1ee99f427692bp-1
+atan,0x1.4fa26243ec533p-5,0x1.4fd27e42fee18p-5
+atan,0x1.23f76c5b291dap0,0x1.16e006acb8705p1
+atan,0x1.6a2c00d87d8cbp0,0x1.96c1f56bb3ecp2
+atan,0x1.ce2ede3cfe213p-1,0x1.4465757dbedfbp0
+atan,-0x1.96de145a3522ap-3,-0x1.9c4e5eeeecbbep-3
+atan,0x1.fc986a4e02d85p-1,0x1.88ecbcd2d2faep0
+atan,-0x1.7d2bdd9dd963dp-1,-0x1.d7b88883d1ccp-1
+atan,-0x1.6ccc6912a2b52p-2,-0x1.7d0e90eb3979p-2
+atan,-0x1.7cce0b00139a5p-1,-0x1.d70b2efdbf7d6p-1
+atan,-0x1.c84f09989be7dp-1,-0x1.3cda2a813a76cp0
+atan,0x1.49997b5bd68fbp0,0x1.b7ab14bfee8e3p1
+atan,-0x1.8a17b210ea8f4p-2,-0x1.9ec69523e8b5dp-2
+atan,0x1.c2c2f910f5a49p-5,0x1.c337932bafc7fp-5
+atan,0x1.30b5e4abffe2bp-1,0x1.5aa2ae345e042p-1
+atan,-0x1.6f0d238644b13p0,-0x1.d038428eb72a2p2
+atan,0x1.eb0f0065197c4p-1,0x1.6cf583df7da58p0
+atan,-0x1.17f88069bcfb3p0,-0x1.ef28488b9b37ap0
+atan,0x1.9f15a9cdc1a55p-6,0x1.9f2c676017f62p-6
+atan,0x1.7a8eb9b9f6c8cp0,0x1.5aa1c940df06fp3
+atan,0x1.084798bf4f5bp-1,0x1.228deadc77f93p-1
+atan,-0x1.94d86a3730fcap-1,-0x1.02bc6fc2b9406p0
+atan,0x1.7f716012bca93p0,0x1.b5bdf80140d62p3
+atan,-0x1.0cd2bf725cd1fp0,-0x1.be61f0ae4b482p0
+atan,-0x1.81e572dd21298p-1,-0x1.e0881c5defdfbp-1
+atan,0x1.39aaae5bda58ep-6,0x1.39b47e2cbc2e1p-6
+atan,-0x1.48b9f68aa1f3ep0,-0x1.b225466841e6p1
+atan,0x1.5b28184ab3592p-1,0x1.9c60b29b278adp-1
+atan,0x1.0f7ef35db0cedp0,0x1.c961c61bb393cp0
+atan,0x1.0f0f5b6d2caa4p-1,0x1.2b962e4e16b09p-1
+atan,0x1.a5c56336af70cp-2,0x1.bf5c2d5f26beep-2
+atan,0x1.680ec9ce7c643p0,0x1.81f872a48680cp2
+atan,-0x1.48d23d579898ep0,-0x1.b2bd3e6325baep1
+atan,0x1.007eec1dce73dp-2,0x1.05ff912205895p-2
+atan,-0x1.a69fd5ea0e91p-5,-0x1.a6ffec34fdae1p-5
+atan,-0x1.f7938809d3e5dp-1,-0x1.80a0b8352e767p0
+atan,0x1.f515ff0fef504p-2,0x1.10a975f570853p-1
+atan,0x1.902e97ef8d67dp-1,0x1.fc2185cdb31a7p-1
+atan,0x1.6c5893306ecc8p-2,0x1.7c8ab62ecbab7p-2
+atan,0x1.b8c6aad242c76p-2,0x1.d62e14e11b1e7p-2
+atan,-0x1.1549e561cc3bfp-2,-0x1.1c4567ed7dd9bp-2
+atan,-0x1.0012912d25ea6p0,-0x1.8ef1e714578d8p0
+atan,-0x1.a2ec60e1153ccp-2,-0x1.bbf914ae73ba7p-2
+atan,0x1.55d9a44b6a28p0,0x1.0ac904e60e827p2
+atan,0x1.5e12c30d51e21p0,0x1.366bd74b5179dp2
+atan,0x1.7944f6639bf71p0,0x1.488ff56433813p3
+atan,0x1.9189a07a9863fp-1,0x1.fed42e46b2658p-1
+atan,0x1.4bc249840a266p0,0x1.c5e64aa13a641p1
+atan,-0x1.e0e2d63a8acaep-1,-0x1.5df559f13edbcp0
+atan,0x1.c358a9a45837p-3,0x1.cacc5dc9f46b9p-3
+atan,-0x1.a12e8b47bb59ap-1,-0x1.0f84d28c6afc3p0
+atan,0x1.beaa600735ac2p-1,0x1.30ebca35d471fp0
+atan,-0x1.3446c8ecbbfcfp-1,-0x1.5fdc5566d7c64p-1
+atan,0x1.42a6ca35be6dcp0,0x1.8efd0101ce554p1
+atan,-0x1.14b7ab3e48f35p-1,-0x1.333b180971a27p-1
+atan,-0x1.c192207f495cp-1,-0x1.347561bd4d841p0
+atan,0x1.dbe77966530f2p-1,0x1.56e7f4b249cd2p0
+atan,-0x1.1096376ddecc2p-2,-0x1.17369abf533b1p-2
+atan,0x1.83b362fd21348p-4,0x1.84dcdc2401be9p-4
+atan,0x1.834bdf0a516b8p-1,0x1.e32bfcdef37f3p-1
+atan,-0x1.8aae6465ee3d2p-1,-0x1.f153b4e67b34bp-1
+atan,-0x1.0cdd6ce8d2931p-1,-0x1.28a5bd4c72f68p-1
+atan,0x1.ab12e9bcfca44p-2,0x1.c5b07ae2644dep-2
+atan,-0x1.d8f3f0d9d900ep-1,-0x1.52d07a14b002ep0
+atan,0x1.55e73c1c43e7p0,0x1.0b07857cdb669p2
+atan,-0x1.993310a26c8c3p-1,-0x1.072cdbc0c3265p0
+atan,-0x1.1d9a4ed57ce1ap0,-0x1.058691ac7450ap1
+atan,-0x1.b4f4e4258ab19p-1,-0x1.256fffde053cdp0
+atan,0x1.78415f04d47b4p0,0x1.3b999693d4792p3
+atan,0x1.84665e9dbda69p0,0x1.2a2b7551ba18fp4
+atan,0x1.8ce99d073e7cap-1,0x1.f5ae9abbf5021p-1
+atan,0x1.aedf77914b5b2p-2,0x1.ca3dddb2e10edp-2
+atan,-0x1.4c5ad4fe03441p-1,-0x1.8485cc6541d79p-1
+atan,-0x1.68a1270c8a7ecp0,-0x1.87628ace570afp2
+atan,-0x1.26d36b5410e32p-1,-0x1.4c678181ece16p-1
+atan,0x1.090b91cfd10dep0,0x1.af7fe532b4115p0
+atan,0x1.6dc1a49fa96dap-2,0x1.7e25daf2404ebp-2
+atan,0x1.118cffbae8892p0,0x1.d21f2971059d7p0
+atan,0x1.4c8b94010a5f2p-1,0x1.84d2a2b940b3dp-1
+atan,0x1.f5ad4729db9adp-2,0x1.110a9555d7137p-1
+atan,0x1.7a8d8f3aa2a3ep-1,0x1.d2e70a2cd9268p-1
+atan,-0x1.bc217e08d139bp-3,-0x1.c33a03fbf97d3p-3
+atan,-0x1.297dd7227bb5ep-1,-0x1.5034dd186346cp-1
+atan,-0x1.ce6b7fbcba912p-1,-0x1.44b47fc0f18e4p0
+atan,0x1.93289102e9a14p-1,0x1.010965205f73fp0
+atan,-0x1.46d8b28b0f8f2p-1,-0x1.7be99431179dfp-1
+atan,-0x1.7e6490113792fp-1,-0x1.d9fbeffa46b75p-1
+atan,-0x1.8fe43874effc4p-8,-0x1.8fe57db7b553ep-8
+atan,-0x1.d37c2a2e19a16p-2,-0x1.f6eb6496635d2p-2
+atan,-0x1.9cb07072a00c7p-1,-0x1.0aca1ef2353e8p0
+atan,0x1.9c487bff5a805p-2,0x1.b41b45eb4edbp-2
+ceil,0x1.0p1,0x1.1529c4488417ep0
+ceil,0x1.0p1,0x1.8fa0a5e8cee32p0
+ceil,-0x0.0p0,-0x1.8819e79d62b8p-1
+ceil,-0x1.0p3,-0x1.1824560a8c094p3
+ceil,0x1.0p0,0x1.c7993d0a6bab1p-5
+ceil,0x1.0p0,0x1.d3f48401ae71dp-2
+ceil,-0x0.0p0,-0x1.fe333a8929a13p-4
+ceil,-0x1.0p0,-0x1.d3f9245636b8cp0
+ceil,-0x1.0p0,-0x1.38b161487c697p0
+ceil,-0x1.8p1,-0x1.c652252a89289p1
+ceil,0x1.0p0,0x1.8a14843eadfc1p-1
+ceil,-0x1.2p3,-0x1.2a33602af54ccp3
+ceil,-0x1.0p1,-0x1.3c7c5d5fb992ap1
+ceil,0x1.0p0,0x1.3268391790ec4p-1
+ceil,0x1.0p0,0x1.9094f869a3e47p-1
+ceil,0x1.0p0,0x1.8af45bc4cf8a4p-2
+ceil,0x1.0p2,0x1.d5c53dc486547p1
+ceil,-0x0.0p0,-0x1.275b5fb11c3a7p-1
+ceil,0x1.8p1,0x1.5bf1bc1ca6e71p1
+ceil,0x1.0p0,0x1.b20f092a375bep-2
+ceil,0x1.0p0,0x1.90e6fb00878ffp-4
+ceil,0x1.8p1,0x1.6645838752797p1
+ceil,-0x1.0p0,-0x1.090e646874031p0
+ceil,-0x0.0p0,-0x1.244624fd8840ep-1
+ceil,0x1.0p1,0x1.1dbcee46033afp0
+ceil,-0x0.0p0,-0x1.369578820b61fp-1
+ceil,0x1.0p0,0x1.dd12b37cb5c3dp-1
+ceil,-0x0.0p0,-0x1.aed83bf3664f7p-1
+ceil,0x1.0p0,0x1.79c6eb37d3bddp-2
+ceil,-0x0.0p0,-0x1.d3a80f7edc393p-9
+ceil,0x1.0p0,0x1.250e28aaafd2fp-1
+ceil,0x1.0p1,0x1.a130baee91cb9p0
+ceil,0x1.0p1,0x1.3b015aff7a8cap0
+ceil,-0x1.0p0,-0x1.27ed2173f606ap0
+ceil,0x1.8p1,0x1.2bc99fc2d28c7p1
+ceil,-0x0.0p0,-0x1.6407f78e81b44p-4
+ceil,-0x1.0p3,-0x1.0133e906d864ep3
+ceil,-0x1.0p1,-0x1.43744f4b6b838p1
+ceil,0x1.0p0,0x1.21f601ab8929bp-2
+ceil,-0x1.0p0,-0x1.0821a86abccecp0
+ceil,-0x0.0p0,-0x1.3e013d62a6722p-5
+ceil,0x1.0p1,0x1.ddeac791f09dep0
+ceil,0x1.0p0,0x1.577b2bc7f7031p-6
+ceil,0x1.8p1,0x1.03d2215d352dap1
+ceil,-0x0.0p0,-0x1.60e23c27385ap-1
+ceil,0x1.8p1,0x1.38514c0fe5f1dp1
+ceil,0x1.0p1,0x1.0b728ebae056bp0
+ceil,0x1.0p0,0x1.ebc2a1f6424cdp-1
+ceil,-0x0.0p0,-0x1.dee83d06f7f71p-1
+ceil,-0x0.0p0,-0x1.66edb73e176c4p-1
+ceil,0x1.0p0,0x1.fe84691bb10dap-2
+ceil,-0x1.0p1,-0x1.01915fd676f7ap1
+ceil,0x1.0p0,0x1.ff569cc31f4cdp-1
+ceil,-0x1.0p0,-0x1.b14772771033bp0
+ceil,0x1.0p0,0x1.27516fd308a65p-2
+ceil,0x1.0p0,0x1.e5837ca4f09d2p-1
+ceil,-0x1.0p0,-0x1.173346f7f2aa6p0
+ceil,0x1.0p1,0x1.7c11f2024962bp0
+ceil,-0x0.0p0,-0x1.a83c9b9ceca0ap-1
+ceil,-0x1.0p0,-0x1.422206d211aa1p0
+ceil,0x1.0p1,0x1.1ae5cbbea5764p0
+ceil,0x1.0p1,0x1.6eb6884552292p0
+ceil,0x1.f8p5,0x1.f0f5662565457p5
+ceil,-0x1.0p0,-0x1.4b85db6fcd1eep0
+ceil,-0x0.0p0,-0x1.dc8865f77e0c6p-1
+ceil,0x1.0p0,0x1.2ff388d1bfc0ap-1
+ceil,0x1.0p2,0x1.feb52d333684dp1
+ceil,-0x0.0p0,-0x1.8684a25997011p-1
+ceil,0x1.8p1,0x1.1065bca309eabp1
+ceil,-0x1.0p1,-0x1.2bad263cc2bbdp1
+ceil,0x1.0p3,0x1.c03e4c3d9a2fbp2
+ceil,-0x1.0p3,-0x1.0d3236eb056a6p3
+ceil,0x1.0p0,0x1.cedd70625e604p-1
+ceil,-0x1.0p3,-0x1.111661321bcfbp3
+ceil,0x1.0p0,0x1.fbe1cf7ae152bp-4
+ceil,-0x1.8p2,-0x1.b3d4537ae5063p2
+ceil,-0x1.bp4,-0x1.b7c60675c92b8p4
+ceil,0x1.0p1,0x1.346350e06b91cp0
+ceil,-0x0.0p0,-0x1.cdacbbaf88c8dp-1
+ceil,0x1.0p0,0x1.10c7104e9e63fp-1
+ceil,0x1.3p4,0x1.204422a4f53fep4
+ceil,-0x1.0p1,-0x1.0662f72abe8a6p1
+ceil,-0x1.0p0,-0x1.a3d7a01a3f3edp0
+ceil,-0x0.0p0,-0x1.87236c099c455p-1
+ceil,-0x1.0p1,-0x1.1d23595667d0ap1
+ceil,-0x1.0p1,-0x1.2fa6984e9bce5p1
+ceil,0x1.0p0,0x1.8653440b01b0cp-1
+ceil,0x1.0p1,0x1.110d9cff88cb3p0
+ceil,-0x0.0p0,-0x1.ce628c70988e6p-1
+ceil,-0x1.cp3,-0x1.dfb37608c0c64p3
+ceil,0x1.8p1,0x1.18034b67f0851p1
+ceil,0x1.ap3,0x1.92212ab8078d4p3
+ceil,-0x0.0p0,-0x1.16237c5f2fec2p-2
+ceil,-0x0.0p0,-0x1.3437619f7a954p-2
+ceil,0x1.0p1,0x1.65c8478a49299p0
+ceil,0x1.0p0,0x1.5c0bab7760c84p-2
+ceil,0x1.8p1,0x1.1f819dfae4afp1
+ceil,-0x1.0p0,-0x1.7cf71f30f00a1p0
+ceil,-0x1.4p3,-0x1.4343496871035p3
+ceil,0x1.8p2,0x1.7eed6e5ec8f76p2
+ceil,-0x0.0p0,-0x1.6250ab358d26ep-1
+ceil,-0x1.0p0,-0x1.061e9fa685ef2p0
+ceil,-0x1.0p0,-0x1.db3ce5988640bp0
+ceil,-0x0.0p0,-0x1.ccbb1731eab01p-3
+ceil,0x1.4p2,0x1.3d89f980914b3p2
+ceil,-0x0.0p0,-0x1.8561418dcb05fp-1
+ceil,-0x0.0p0,-0x1.7e6ae3e00fda7p-1
+ceil,-0x1.8p1,-0x1.b4d580276c008p1
+ceil,-0x0.0p0,-0x1.4481bfbcdeac8p-2
+ceil,-0x1.0p0,-0x1.f0bd42cf0da5p0
+ceil,0x1.0p0,0x1.6825db009c06fp-6
+ceil,-0x1.7cp6,-0x1.7e258696b572dp6
+ceil,-0x1.0p0,-0x1.08a7031acc1fbp0
+ceil,-0x1.0p0,-0x1.3bf4bdcfc2fcbp0
+ceil,-0x0.0p0,-0x1.af07481527887p-2
+ceil,-0x1.cp2,-0x1.c4323c29863c1p2
+ceil,0x1.0p0,0x1.e647720b87a44p-1
+ceil,-0x1.0p3,-0x1.1ce9f63825e86p3
+ceil,0x1.0p0,0x1.27092264d1649p-1
+ceil,0x1.0p2,0x1.ad5ee9acacce9p1
+ceil,-0x1.0p0,-0x1.563e9a4c62f6ep0
+ceil,0x1.0p0,0x1.c6a06bb05af8fp-1
+ceil,-0x0.0p0,-0x1.ba5fa6bbd75aap-1
+ceil,-0x1.0p1,-0x1.2a716a394422ep1
+ceil,-0x1.0p0,-0x1.5ce4388bb2741p0
+ceil,-0x1.8p1,-0x1.9647c24134d4fp1
+ceil,0x1.0p1,0x1.3c201ab593d83p0
+ceil,-0x1.8p1,-0x1.9fd79f468a524p1
+ceil,-0x1.0p0,-0x1.7f8801da75951p0
+ceil,-0x1.0p0,-0x1.c4b2c1f85d17ep0
+ceil,0x1.8p1,0x1.324fd4c7777afp1
+ceil,0x1.0p0,0x1.17dbcdbd1808dp-2
+ceil,-0x1.8p1,-0x1.91dd59b003aa4p1
+ceil,0x1.0p1,0x1.bb7f4cb0d714ep0
+ceil,-0x1.8p1,-0x1.ebb29f8a0960dp1
+ceil,-0x1.0p0,-0x1.7078ebcdda1c5p0
+ceil,0x1.4p2,0x1.18426a14825adp2
+ceil,0x1.8p1,0x1.1c4eed388ae27p1
+ceil,-0x1.0p0,-0x1.1a672e6f342cap0
+ceil,0x1.0p0,0x1.24df781832f6cp-2
+ceil,0x1.0p1,0x1.0a1f891d533b5p0
+ceil,-0x0.0p0,-0x1.ad75df6d0acc4p-5
+ceil,0x1.4p2,0x1.2278ad791ea05p2
+ceil,0x1.0p1,0x1.3453656d1d512p0
+ceil,0x1.8p1,0x1.777b9363eaa83p1
+ceil,0x1.0p0,0x1.298f39f5ec8cfp-1
+ceil,0x1.0p1,0x1.d874534d73fb8p0
+ceil,-0x1.0p1,-0x1.457fc8ce77418p1
+ceil,-0x1.4p3,-0x1.578f3415c0213p3
+ceil,0x1.0p0,0x1.19a28add78761p-2
+ceil,0x1.0p0,0x1.93ccc9c24d8bap-1
+ceil,-0x0.0p0,-0x1.ab3ce1ce572c5p-3
+ceil,-0x1.0p0,-0x1.02be59a5332b9p0
+ceil,0x1.0p0,0x1.e099afd9aa97dp-1
+ceil,0x1.8p1,0x1.27f2155750c05p1
+ceil,-0x0.0p0,-0x1.d355da98f638fp-4
+ceil,-0x1.0p0,-0x1.0041d23ea4d7bp0
+ceil,0x1.0p1,0x1.51145fc5e1f75p0
+ceil,-0x0.0p0,-0x1.6c1df0f11a2e7p-2
+ceil,-0x0.0p0,-0x1.21db253403df3p-1
+ceil,-0x1.0p0,-0x1.389765eb19788p0
+ceil,0x1.0p0,0x1.9394bba3f12b1p-1
+ceil,0x1.0p1,0x1.36f2b043cd3c6p0
+ceil,-0x1.0p1,-0x1.651fab3095a4p1
+ceil,-0x1.0p0,-0x1.19bc2e8032b5dp0
+ceil,0x1.0p0,0x1.52521ff2087fep-1
+ceil,0x1.0p0,0x1.d19920fd65aedp-1
+ceil,0x1.0p2,0x1.ca65379dbc236p1
+ceil,-0x0.0p0,-0x1.4182a228c01d8p-1
+ceil,-0x0.0p0,-0x1.31e846b97569ep-4
+ceil,-0x0.0p0,-0x1.7cf3e72de231dp-1
+ceil,-0x0.0p0,-0x1.73c457b5b6f22p-2
+ceil,-0x1.8p1,-0x1.9c10281fbe6a1p1
+ceil,0x1.0p0,0x1.d9d17cc9eb21bp-1
+ceil,-0x1.8p2,-0x1.a59ad9f77bc62p2
+ceil,0x1.0p0,0x1.0e8e995cbe5e5p-2
+ceil,0x1.0p1,0x1.a06747e83f024p0
+ceil,0x1.0p0,0x1.4f4bdabe2938p-1
+ceil,0x1.0p1,0x1.386e6fa60b62dp0
+ceil,0x1.0p0,0x1.72e70f3c3565cp-3
+ceil,-0x0.0p0,-0x1.57af1fd8538a3p-2
+ceil,0x1.0p0,0x1.113dddb6f917cp-2
+ceil,0x1.0p3,0x1.d2b6aec26de9fp2
+ceil,0x1.0p1,0x1.a74c3bfcfb9dbp0
+ceil,0x1.0p1,0x1.95f962791803p0
+ceil,-0x0.0p0,-0x1.340954bbf6f2fp-3
+ceil,-0x0.0p0,-0x1.9763472624c7ap-1
+ceil,-0x0.0p0,-0x1.4a8957e0afd17p-2
+ceil,-0x0.0p0,-0x1.f44af2012da19p-2
+ceil,0x1.0p1,0x1.c2a009304a9afp0
+ceil,-0x0.0p0,-0x1.2f91f183cfcafp-1
+ceil,0x1.0p0,0x1.a44995b6d17f8p-1
+ceil,-0x1.0p0,-0x1.3dcaa9d221b29p0
+ceil,-0x0.0p0,-0x1.4377f9d707078p-1
+ceil,-0x1.0p0,-0x1.ae0e18d669e6dp0
+ceil,0x1.0p2,0x1.ed421922674e3p1
+ceil,0x1.0p1,0x1.3048c00d10bf6p0
+ceil,0x1.0p0,0x1.96900a95da243p-2
+ceil,0x1.0p0,0x1.2d536970cab18p-2
+ceil,0x1.8p1,0x1.7274657cd9bf7p1
+floor,-0x1.0p0,-0x1.60ea637ea2799p-1
+floor,0x1.0p0,0x1.a0e6ad21f666dp0
+floor,-0x1.0p0,-0x1.8140ade02e521p-1
+floor,0x1.0p0,0x1.e8f78ef0d2ee3p0
+floor,0x0.0p0,0x1.4768d41c69116p-3
+floor,0x0.0p0,0x1.b135df74fb11ap-2
+floor,-0x1.0p1,-0x1.467b1c700773ap0
+floor,-0x1.8p1,-0x1.262bff2a64dfbp1
+floor,0x0.0p0,0x1.e0c30caa288c9p-5
+floor,0x0.0p0,0x1.c9114e290ccb5p-4
+floor,0x1.0p3,0x1.0a7b9c7291c7cp3
+floor,-0x1.8p1,-0x1.00a8853762f52p1
+floor,-0x1.0p1,-0x1.0dc1bfba6c846p0
+floor,0x1.0p0,0x1.1778a75927d75p0
+floor,0x1.0p0,0x1.519ca23faddbfp0
+floor,0x1.0p0,0x1.5e1c3249ec62dp0
+floor,-0x1.0p0,-0x1.3e3c0cdde87b8p-1
+floor,-0x1.0p0,-0x1.ca5fe8d10aa5cp-1
+floor,0x1.0p1,0x1.2aed263c57cacp1
+floor,-0x1.0p0,-0x1.4b67a366df0eep-1
+floor,-0x1.0p0,-0x1.ce05fad1edb67p-7
+floor,0x0.0p0,0x1.1bb55f4aa4993p-2
+floor,0x1.0p4,0x1.0a823844e502cp4
+floor,0x1.0p0,0x1.3a4cbb7c16ed9p0
+floor,-0x1.0p1,-0x1.b6d5224a0854cp0
+floor,0x0.0p0,0x1.167bad5a4ef99p-1
+floor,-0x1.0p0,-0x1.736d2d56b012ap-1
+floor,-0x1.0p1,-0x1.25a79ea67b0ddp0
+floor,0x1.0p0,0x1.704f495734a57p0
+floor,0x0.0p0,0x1.4c4b08060544dp-3
+floor,0x0.0p0,0x1.c40ab6550f5bap-4
+floor,0x1.0p1,0x1.2176c61aa4165p1
+floor,-0x1.0p0,-0x1.e8712f6aec8d6p-2
+floor,0x1.0p1,0x1.1a68bcf1c854ap1
+floor,-0x1.0p1,-0x1.65d0481233f84p0
+floor,0x0.0p0,0x1.73ed43d3e7f11p-1
+floor,0x0.0p0,0x1.dd7b26440e0fp-1
+floor,-0x1.8p1,-0x1.1c7a19a7c154ep1
+floor,0x0.0p0,0x1.d7e8971cb7371p-2
+floor,0x0.0p0,0x1.3dcd455837f28p-3
+floor,-0x1.0p0,-0x1.5b079da41f53fp-2
+floor,0x0.0p0,0x1.2a52ab19ae71bp-1
+floor,-0x1.cp2,-0x1.a483cfe4e5739p2
+floor,0x1.0p0,0x1.7a00e9fce97eep0
+floor,-0x1.0p0,-0x1.ed6655cca4ad1p-1
+floor,0x0.0p0,0x1.5555ca39f41dap-1
+floor,-0x1.8p1,-0x1.08b8f0227c007p1
+floor,0x1.0p0,0x1.7a7038a587767p0
+floor,0x1.3p4,0x1.32c7c23003bp4
+floor,0x1.cp2,0x1.dddf2d57aff3fp2
+floor,-0x1.0p0,-0x1.3d7423fd71bd3p-1
+floor,0x0.0p0,0x1.b792fa35f95c3p-1
+floor,-0x1.0p1,-0x1.3b6e1f376d271p0
+floor,-0x1.0p2,-0x1.daacf3a509866p1
+floor,-0x1.0p0,-0x1.bc1b98f41db09p-3
+floor,0x0.0p0,0x1.5b415fcfabca7p-1
+floor,0x1.bap7,0x1.baf7c0481a882p7
+floor,0x1.0p0,0x1.0cde4d5f908d1p0
+floor,0x1.5p4,0x1.52b25de23940ep4
+floor,-0x1.0p1,-0x1.32433c100d7c5p0
+floor,-0x1.0p1,-0x1.9590f9188898dp0
+floor,0x0.0p0,0x1.ae6a210494d6cp-1
+floor,-0x1.0p0,-0x1.57cde9e191efbp-3
+floor,0x1.0p1,0x1.3469d5db5ff16p1
+floor,-0x1.0p0,-0x1.3ed490470f44p-5
+floor,0x1.0p0,0x1.3a36b9f710262p0
+floor,0x0.0p0,0x1.12a59e5193b61p-2
+floor,0x0.0p0,0x1.4eb8dd0b28615p-1
+floor,0x1.0p1,0x1.66f0dc8b5c339p1
+floor,0x0.0p0,0x1.23a078e3b5e6p-2
+floor,0x0.0p0,0x1.da1a50e522d41p-3
+floor,-0x1.0p0,-0x1.d5912533e23bfp-1
+floor,-0x1.0p0,-0x1.d0aac7b5164a6p-3
+floor,0x1.0p0,0x1.153d729a3811ap0
+floor,-0x1.0p0,-0x1.35e3b75b5846ap-2
+floor,-0x1.0p1,-0x1.3357b71d4bd17p0
+floor,0x0.0p0,0x1.e96464db621dfp-2
+floor,0x1.0p0,0x1.40bd49dee854bp0
+floor,0x1.0p1,0x1.062e799f901dep1
+floor,-0x1.0p0,-0x1.04a4254ba4316p-2
+floor,0x0.0p0,0x1.2b58e8fb659abp-1
+floor,0x0.0p0,0x1.d59c6d5f0b9a5p-1
+floor,-0x1.0p1,-0x1.ce04754179edbp0
+floor,0x0.0p0,0x1.3d88c164be795p-1
+floor,0x0.0p0,0x1.9df30bf9eedfep-3
+floor,-0x1.0p0,-0x1.bd28c6cb9c04fp-1
+floor,0x1.0p0,0x1.5c84d6e9ecf5ep0
+floor,-0x1.0p0,-0x1.5ef4731d7afb8p-1
+floor,-0x1.0p1,-0x1.514f5822c3e18p0
+floor,0x1.0p1,0x1.1f445dca8719cp1
+floor,-0x1.0p1,-0x1.c32d845859f41p0
+floor,-0x1.0p0,-0x1.1499d5f055ed4p-2
+floor,0x0.0p0,0x1.f96e2e85d76ddp-1
+floor,0x1.2p4,0x1.2f54d9becdb9ap4
+floor,0x1.0p0,0x1.b4a70a664f94cp0
+floor,0x0.0p0,0x1.89925cf338b0ap-3
+floor,0x0.0p0,0x1.46bfd9a028234p-1
+floor,-0x1.4p2,-0x1.0cc01fd33b135p2
+floor,0x0.0p0,0x1.b2e629cd67709p-1
+floor,-0x1.0p1,-0x1.ae455bde069edp0
+floor,-0x1.0p0,-0x1.a7a453b404f81p-2
+floor,0x1.0p2,0x1.3c570740ad475p2
+floor,-0x1.0p0,-0x1.cf72c10746e05p-2
+floor,-0x1.8p1,-0x1.76f04aca37abap1
+floor,0x0.0p0,0x1.bec66b0a86f77p-1
+floor,0x1.0p4,0x1.0ba4c7ed4ce2ep4
+floor,0x1.0p1,0x1.0a46dbc6d5d34p1
+floor,-0x1.0p0,-0x1.00117e3bb17bp-2
+floor,-0x1.ep3,-0x1.dc28d1350a5ffp3
+floor,0x1.0p0,0x1.cd3d22916dea2p0
+floor,-0x1.0p0,-0x1.d535e729151f2p-2
+floor,-0x1.0p0,-0x1.87a04f8c3f0f3p-3
+floor,0x0.0p0,0x1.d5a27a7fa5ca6p-2
+floor,-0x1.0p0,-0x1.fe33a0c1cd67dp-1
+floor,-0x1.8p1,-0x1.1629a92d4c7e5p1
+floor,0x1.8p1,0x1.f01fb38ad0a02p1
+floor,-0x1.0p1,-0x1.1d61b49bf1823p0
+floor,-0x1.0p1,-0x1.dead34e8651f2p0
+floor,-0x1.2p3,-0x1.0813c277add17p3
+floor,0x1.0p0,0x1.4d2255b09c941p0
+floor,0x0.0p0,0x1.cf7ffb800697p-2
+floor,0x0.0p0,0x1.b11c2fbff3b72p-2
+floor,-0x1.0p0,-0x1.e94968648ecd3p-3
+floor,0x0.0p0,0x1.31b74583c0577p-1
+floor,0x0.0p0,0x1.be82361931e57p-3
+floor,0x1.8p1,0x1.dad0eb6f40657p1
+floor,-0x1.0p1,-0x1.5f1d91f872285p0
+floor,-0x1.8p2,-0x1.49a98786ea925p2
+floor,-0x1.8p1,-0x1.573ee5fbff85ep1
+floor,0x0.0p0,0x1.23d95b8567a42p-2
+floor,-0x1.0p2,-0x1.daa4ab42e2285p1
+floor,0x1.0p2,0x1.0ee22526606fep2
+floor,-0x1.0p0,-0x1.5a9ae8bc2ee6ap-2
+floor,-0x1.2cp6,-0x1.2a5ceb52951p6
+floor,-0x1.8p1,-0x1.6bc8f8b516b47p1
+floor,0x1.8p1,0x1.e9e0f48e16c06p1
+floor,0x0.0p0,0x1.d526a6e007cp-1
+floor,0x1.8p1,0x1.fbe84243ca9aep1
+floor,0x1.0p0,0x1.a5958e7ea9034p0
+floor,0x0.0p0,0x1.4cddd2d0f089p-2
+floor,0x1.0p0,0x1.22aee3a4b1f97p0
+floor,0x0.0p0,0x1.6be900fb60ba3p-2
+floor,0x1.0p1,0x1.7cd1b9585b0a6p1
+floor,-0x1.0p0,-0x1.2f87e8b9b32c5p-5
+floor,0x1.0p0,0x1.439b764651b23p0
+floor,-0x1.0p2,-0x1.8ec036fdd0566p1
+floor,0x1.0p2,0x1.02e194a0b1f1ep2
+floor,0x0.0p0,0x1.9b85107063739p-1
+floor,0x1.0p0,0x1.cf6177e36e21p0
+floor,-0x1.0p1,-0x1.7caa1215c337fp0
+floor,-0x1.0p1,-0x1.16416e7476fbfp0
+floor,0x0.0p0,0x1.c1b12bf16539ep-4
+floor,-0x1.cp2,-0x1.bc048d8aa90d4p2
+floor,-0x1.0p1,-0x1.23b3f2fd28dfp0
+floor,0x0.0p0,0x1.e4bae2b8297d9p-1
+floor,-0x1.4p2,-0x1.2b42ab1745eb3p2
+floor,-0x1.0p1,-0x1.07de022cfd745p0
+floor,0x0.0p0,0x1.323fcc0c22a1p-1
+floor,0x0.0p0,0x1.f5bce5b7c966cp-3
+floor,0x0.0p0,0x1.5993da56bb29cp-3
+floor,-0x1.4p2,-0x1.03a9d3b28df3fp2
+floor,-0x1.0p0,-0x1.59389b5a584a1p-2
+floor,0x0.0p0,0x1.c044a36dba2dep-6
+floor,-0x1.0p1,-0x1.6b4c7e12fa7bap0
+floor,0x0.0p0,0x1.8e7465c37d836p-2
+floor,0x0.0p0,0x1.4dc98a95e1b73p-2
+floor,0x0.0p0,0x1.441dde51458dbp-1
+floor,-0x1.0p0,-0x1.fdf675799bd3ap-1
+floor,-0x1.0p0,-0x1.1eb3acc2f5f8ep-1
+floor,-0x1.0p0,-0x1.5835ed6b38475p-2
+floor,0x1.8p2,0x1.99615c66977fbp2
+floor,-0x1.0p0,-0x1.5038df45d5039p-1
+floor,0x1.8p3,0x1.8a28ebd6820b9p3
+floor,0x1.8p1,0x1.8407d341a1b3ap1
+floor,-0x1.0p1,-0x1.e7c141af0dd15p0
+floor,-0x1.0p1,-0x1.9148faf3c8186p0
+floor,0x1.0p0,0x1.70792e2fc4575p0
+floor,0x1.2p5,0x1.27bdbf35f1357p5
+floor,0x0.0p0,0x1.ed53509ca5181p-1
+floor,-0x1.0p1,-0x1.16cea1321677cp0
+floor,0x1.0p0,0x1.35ec318d055dap0
+floor,-0x1.4p2,-0x1.1b3a65f84f0d3p2
+floor,0x1.0p0,0x1.da1158fdf2d88p0
+floor,-0x1.0p0,-0x1.2241894bf9a26p-1
+floor,-0x1.4p2,-0x1.26f9c915dfca7p2
+floor,-0x1.0p1,-0x1.37701c8fd1802p0
+floor,0x1.0p0,0x1.8359fb530facp0
+floor,-0x1.0p0,-0x1.9bc54c822ae78p-1
+floor,0x1.0p1,0x1.0edbd4f2daa43p1
+floor,0x1.2p4,0x1.2d57e9335a4a4p4
+floor,0x0.0p0,0x1.35eebd2e25a13p-4
+floor,-0x1.0p1,-0x1.4fc7efa4afbb4p0
+floor,0x0.0p0,0x1.89cfce5943f74p-1
+floor,-0x1.0p0,-0x1.f7b8793b8fb79p-2
+floor,0x1.4p3,0x1.51116bcb39f21p3
+floor,-0x1.0p1,-0x1.00861713523cap0
+floor,-0x1.0p1,-0x1.355af729b4d59p0
+floor,-0x1.0p0,-0x1.144405a9b9f7ap-2
+floor,0x1.0p0,0x1.58cd4d03e688p0
+floor,-0x1.0p0,-0x1.8a6380518a9eap-1
+copySign,-0x1.f0df8a466700bp1,-0x1.f0df8a466700bp1,-0x1.6e938e3732539p-1
+copySign,-0x1.58e4f34672f61p4,0x1.58e4f34672f61p4,-0x1.27d6a2e67009cp-1
+copySign,-0x1.f4b9bf237c55fp0,-0x1.f4b9bf237c55fp0,-0x1.37c0ebff02017p0
+copySign,-0x1.59f3d2a9fe64ap2,-0x1.59f3d2a9fe64ap2,-0x1.2669d7ca6a8d6p0
+copySign,-0x1.c46d4baa04314p-2,-0x1.c46d4baa04314p-2,-0x1.5d0597ad91f24p-2
+copySign,0x1.27953254ab2d4p0,-0x1.27953254ab2d4p0,0x1.cf0f007876816p-1
+copySign,-0x1.ee50997f5ec0cp-2,0x1.ee50997f5ec0cp-2,-0x1.1fe2c0d6e4b9bp-1
+copySign,0x1.3318225589ce5p1,0x1.3318225589ce5p1,0x1.8013386023341p1
+copySign,0x1.836934e49ccf1p-1,-0x1.836934e49ccf1p-1,0x1.23098c339673cp1
+copySign,-0x1.a76ccea1e588ap0,-0x1.a76ccea1e588ap0,-0x1.1bf459b597376p-1
+copySign,-0x1.0474aaa82fa0dp3,0x1.0474aaa82fa0dp3,-0x1.10aae9980d88ap-1
+copySign,0x1.3ad3f960b27ffp5,-0x1.3ad3f960b27ffp5,0x1.dbb76f5f93749p-1
+copySign,-0x1.759f798e531dbp-1,0x1.759f798e531dbp-1,-0x1.35757ea9c1ecep6
+copySign,0x1.07a6b63ed401cp2,0x1.07a6b63ed401cp2,0x1.5d12b41ddbb79p0
+copySign,0x1.1beba7d00213p-3,-0x1.1beba7d00213p-3,0x1.73b0d543f50eap1
+copySign,-0x1.ec2d7caf4bb15p-1,-0x1.ec2d7caf4bb15p-1,-0x1.35763cca9e848p-1
+copySign,-0x1.320be2d4133e4p1,0x1.320be2d4133e4p1,-0x1.f1aabc8d9cacdp-2
+copySign,-0x1.e81f03d1b1f11p-4,0x1.e81f03d1b1f11p-4,-0x1.c9787b7217e15p0
+copySign,-0x1.9e5de05c3a504p0,0x1.9e5de05c3a504p0,-0x1.9662999a6d0ecp0
+copySign,0x1.1ac5a7d39dd98p1,-0x1.1ac5a7d39dd98p1,0x1.f7df0731acbdfp-2
+copySign,0x1.81a4cc956f6d4p-1,0x1.81a4cc956f6d4p-1,0x1.1c8c997022c39p-1
+copySign,0x1.5a8a187b65edcp-2,0x1.5a8a187b65edcp-2,0x1.ed1693c7a34f7p-3
+copySign,-0x1.949965fc32defp-1,0x1.949965fc32defp-1,-0x1.20a1e248f5809p3
+copySign,0x1.0ad14bba1ef12p-2,0x1.0ad14bba1ef12p-2,0x1.4141fe80406c7p-5
+copySign,-0x1.0137cbd8c37ep4,0x1.0137cbd8c37ep4,-0x1.bbafad456d25ap-2
+copySign,-0x1.da814e501ccf5p-2,-0x1.da814e501ccf5p-2,-0x1.e7de8b3c8aa78p0
+copySign,-0x1.250e6e8bd43a9p3,-0x1.250e6e8bd43a9p3,-0x1.1c8849158f73bp-6
+copySign,0x1.9e75347b82bc2p2,-0x1.9e75347b82bc2p2,0x1.1cb9afbcdef47p4
+copySign,-0x1.e2f8822f31c16p-1,0x1.e2f8822f31c16p-1,-0x1.8ad3c5ca6b65dp-2
+copySign,0x1.b685eb38af916p0,0x1.b685eb38af916p0,0x1.6374ea7717b05p-6
+copySign,-0x1.979c64e9e1356p-1,-0x1.979c64e9e1356p-1,-0x1.d49e9503981dp0
+copySign,0x1.ab8e31884c0d5p1,0x1.ab8e31884c0d5p1,0x1.9c39fa86c97dp-2
+copySign,-0x1.1b35d4050d6eep3,0x1.1b35d4050d6eep3,-0x1.e52447d0af096p-1
+copySign,0x1.01ece3c27d9dcp-1,-0x1.01ece3c27d9dcp-1,0x1.145244847160cp6
+copySign,-0x1.b80c2678de384p-2,0x1.b80c2678de384p-2,-0x1.936c44fccd21fp-1
+copySign,-0x1.2052a36acdfedp3,-0x1.2052a36acdfedp3,-0x1.ba743cfd12628p0
+copySign,0x1.34e2b497e5db1p-1,0x1.34e2b497e5db1p-1,0x1.820c9bc86002cp1
+copySign,0x1.3b3c577d99964p-3,-0x1.3b3c577d99964p-3,0x1.049d22834db6cp0
+copySign,-0x1.85098ad6879f3p2,-0x1.85098ad6879f3p2,-0x1.2f3901f936a51p-2
+copySign,0x1.5ae7b6579504cp0,-0x1.5ae7b6579504cp0,0x1.784a5a5c4d26cp-1
+copySign,0x1.fafc40bb0a19cp-3,-0x1.fafc40bb0a19cp-3,0x1.69103cc689b08p3
+copySign,0x1.eabdbee4f9632p-3,-0x1.eabdbee4f9632p-3,0x1.d2afea24a5b42p-5
+copySign,-0x1.891004033ecd1p2,0x1.891004033ecd1p2,-0x1.3a11454e346a5p1
+copySign,-0x1.f01b6dc4ac0bbp1,-0x1.f01b6dc4ac0bbp1,-0x1.cfb6825579416p0
+copySign,0x1.f7c899d54f5c6p-1,-0x1.f7c899d54f5c6p-1,0x1.2d0fbe2b02166p-2
+copySign,0x1.7b38b91e000ccp-2,0x1.7b38b91e000ccp-2,0x1.ec7a13fe10c32p-2
+copySign,0x1.29200e4e691e8p0,-0x1.29200e4e691e8p0,0x1.22167b0a7138cp-1
+copySign,0x1.e1d6dede8d29bp-2,0x1.e1d6dede8d29bp-2,0x1.bb6f58f17f526p-5
+copySign,0x1.70b38d09c870dp0,-0x1.70b38d09c870dp0,0x1.5e3f8440b9a55p0
+copySign,-0x1.0d86ce4639fe5p-1,0x1.0d86ce4639fe5p-1,-0x1.a68483813b43cp-1
+copySign,0x1.704c56be88329p-1,-0x1.704c56be88329p-1,0x1.725af47086397p0
+copySign,-0x1.0d77a56187861p0,-0x1.0d77a56187861p0,-0x1.4e8f6c5c4da1fp-1
+copySign,0x1.616bc7a37d586p-4,0x1.616bc7a37d586p-4,0x1.dce538f8baef8p-1
+copySign,0x1.1984f7e58eb9fp-2,0x1.1984f7e58eb9fp-2,0x1.6bad4065ab9f9p-1
+copySign,-0x1.3bc46c7e3db39p0,-0x1.3bc46c7e3db39p0,-0x1.e3769055ffdd5p-1
+copySign,-0x1.890686c4cf1c2p1,-0x1.890686c4cf1c2p1,-0x1.c9f71a96f48b2p-2
+copySign,-0x1.60aaa4be5d131p1,0x1.60aaa4be5d131p1,-0x1.7cebdbee0a5fap0
+copySign,0x1.207e879e82852p1,0x1.207e879e82852p1,0x1.d738021c0a414p-1
+copySign,0x1.ca8842b5fa409p-1,0x1.ca8842b5fa409p-1,0x1.da66adef17274p0
+copySign,0x1.453da6fd920acp1,0x1.453da6fd920acp1,0x1.490346809f2c9p-1
+copySign,0x1.f40f26c3c0defp-1,0x1.f40f26c3c0defp-1,0x1.4bf3bcd970cfp-1
+copySign,-0x1.e17b7648f17b4p-3,0x1.e17b7648f17b4p-3,-0x1.ce8fac44b0264p-3
+copySign,0x1.c9e6c3dc73255p2,-0x1.c9e6c3dc73255p2,0x1.6e828ba149045p2
+copySign,0x1.d3e8a30c46d7p1,-0x1.d3e8a30c46d7p1,0x1.44afccd04b2c2p1
+copySign,0x1.1fe16aed90d5dp-1,-0x1.1fe16aed90d5dp-1,0x1.05f6ff020d2d3p1
+copySign,-0x1.0b67d7e1e5c5fp2,-0x1.0b67d7e1e5c5fp2,-0x1.7485440d87bedp-3
+copySign,0x1.6d14c2a1d5884p-2,0x1.6d14c2a1d5884p-2,0x1.0b603f6bc0c5cp1
+copySign,-0x1.200e9e5b458f1p1,-0x1.200e9e5b458f1p1,-0x1.1ddf63e8e2fdap5
+copySign,-0x1.191e5d337dd5p-2,0x1.191e5d337dd5p-2,-0x1.9159611a2cbe6p-2
+copySign,-0x1.5a4cdfcb8e387p0,0x1.5a4cdfcb8e387p0,-0x1.99b71920b3a42p-3
+copySign,-0x1.4edb118a322a9p1,-0x1.4edb118a322a9p1,-0x1.500dace8c8b9p0
+copySign,0x1.b8378828e00b7p0,0x1.b8378828e00b7p0,0x1.4a394aabf206ep-7
+copySign,0x1.ab4f73b6406b6p-3,-0x1.ab4f73b6406b6p-3,0x1.f9a4a4b155866p-1
+copySign,-0x1.7eacb4c59fb12p0,0x1.7eacb4c59fb12p0,-0x1.07fe825ae7a4fp-1
+copySign,0x1.15a0a17ecbc34p3,-0x1.15a0a17ecbc34p3,0x1.badefca8d13e1p3
+copySign,0x1.3ff41675d0a7ap-4,0x1.3ff41675d0a7ap-4,0x1.cb1c672a1658ep-1
+copySign,-0x1.b23ebb9174357p0,-0x1.b23ebb9174357p0,-0x1.dd12778fe5673p-1
+copySign,0x1.4bdada96f6dcap1,0x1.4bdada96f6dcap1,0x1.c26f18e638d3fp-1
+copySign,-0x1.bba29d24035efp-3,-0x1.bba29d24035efp-3,-0x1.3c380889a325cp-1
+copySign,0x1.02a89c0b5268cp0,-0x1.02a89c0b5268cp0,0x1.e300d4eec6a0ap-2
+copySign,0x1.55b2e0992047fp-2,0x1.55b2e0992047fp-2,0x1.1ac3b1feb5c5dp0
+copySign,-0x1.ce50f2788c33cp-1,0x1.ce50f2788c33cp-1,-0x1.b626ad516319ep-2
+copySign,-0x1.c2ca018fb926p-2,0x1.c2ca018fb926p-2,-0x1.9407139503761p-2
+copySign,-0x1.da74920d86b9ep2,-0x1.da74920d86b9ep2,-0x1.97c65cd575edcp-2
+copySign,0x1.bb518ae8cbeb5p-1,0x1.bb518ae8cbeb5p-1,0x1.538290c7db1f4p-2
+copySign,0x1.af5b250d0967ap-1,-0x1.af5b250d0967ap-1,0x1.f25525da93bfcp-1
+copySign,0x1.efcce730317acp0,0x1.efcce730317acp0,0x1.0e3cc24d1a6d3p0
+copySign,0x1.79e981a3dcf5fp-1,0x1.79e981a3dcf5fp-1,0x1.3718c1db7ea36p0
+copySign,-0x1.b3b07fab25362p-1,-0x1.b3b07fab25362p-1,-0x1.497027db2e31ap0
+copySign,0x1.a3f51d0063acfp0,-0x1.a3f51d0063acfp0,0x1.12bafba6131b7p1
+copySign,-0x1.6ae64480fad1p-1,0x1.6ae64480fad1p-1,-0x1.ae894d9208326p-3
+copySign,0x1.38ec72aab42efp-2,-0x1.38ec72aab42efp-2,0x1.37609b0c15295p7
+copySign,0x1.7261f9d8a06b6p-1,-0x1.7261f9d8a06b6p-1,0x1.5f7d4239730a7p3
+copySign,0x1.aa8341e431eeep-2,0x1.aa8341e431eeep-2,0x1.4965abdf5ea5ep2
+copySign,0x1.1876fd62a3b1bp0,-0x1.1876fd62a3b1bp0,0x1.d54386f9ede1p-2
+copySign,0x1.043f7753c91cp-1,-0x1.043f7753c91cp-1,0x1.a10b36b6b25b6p-1
+copySign,0x1.dc7a76693435dp-2,0x1.dc7a76693435dp-2,0x1.0d6f38f02ce74p-5
+copySign,-0x1.f5c235cf85acap-1,0x1.f5c235cf85acap-1,-0x1.9d1ba81be1b39p-2
+copySign,-0x1.8fd6c0e1894f8p-2,-0x1.8fd6c0e1894f8p-2,-0x1.9bb19e55de9b7p3
+copySign,-0x1.52b7a40bdb00bp-2,0x1.52b7a40bdb00bp-2,-0x1.b880297c99ddp-2
+copySign,-0x1.606226946e86ap-4,-0x1.606226946e86ap-4,-0x1.e3b5e858e235p-2
+copySign,0x1.be16c6dbe7e77p-1,0x1.be16c6dbe7e77p-1,0x1.18d16a97bf8e3p3
+copySign,0x1.93d6bff47ced7p-2,0x1.93d6bff47ced7p-2,0x1.bb654aa0e7343p-1
+copySign,0x1.c3ef005ead94dp-2,-0x1.c3ef005ead94dp-2,0x1.f96d72f57382fp-3
+copySign,-0x1.5d08152ecd007p-2,-0x1.5d08152ecd007p-2,-0x1.41e2bed9e0eb2p0
+copySign,0x1.0f0426ab5da2dp0,0x1.0f0426ab5da2dp0,0x1.180f1ed88e77bp-1
+copySign,-0x1.bf30ea42a1c62p6,0x1.bf30ea42a1c62p6,-0x1.79f4301027c34p0
+copySign,-0x1.4b2c95d80c1f8p-1,-0x1.4b2c95d80c1f8p-1,-0x1.bfdb14bead7b1p-2
+copySign,-0x1.fe8d41355fb51p-3,-0x1.fe8d41355fb51p-3,-0x1.106b10a1cf095p0
+copySign,-0x1.1e9ae4c0043cdp2,0x1.1e9ae4c0043cdp2,-0x1.b284b7bf2ed48p-1
+copySign,0x1.cf4752a33791ep2,-0x1.cf4752a33791ep2,0x1.d18edfd8af2d2p-2
+copySign,-0x1.34da3b809aa63p-3,-0x1.34da3b809aa63p-3,-0x1.5ed7996eb0cfep1
+copySign,-0x1.08462543a7f67p1,0x1.08462543a7f67p1,-0x1.622b88c45b6cp0
+copySign,0x1.ddb0f2a6118dp-4,-0x1.ddb0f2a6118dp-4,0x1.e2e91a136308ap-4
+copySign,0x1.0dc2c166f994fp0,-0x1.0dc2c166f994fp0,0x1.e2f251db9710dp2
+copySign,-0x1.7816949fdf252p-3,-0x1.7816949fdf252p-3,-0x1.25d0dfae54b6bp-2
+copySign,-0x1.6f32771c047f7p-2,0x1.6f32771c047f7p-2,-0x1.295d96f1a5e5bp-5
+copySign,0x1.023e90b9993efp0,-0x1.023e90b9993efp0,0x1.7c18d9c85dedcp-3
+copySign,0x1.84f071dee523ep-1,0x1.84f071dee523ep-1,0x1.d71ebec495bdcp3
+copySign,-0x1.0a7423ef61323p-1,0x1.0a7423ef61323p-1,-0x1.dd15fae5be205p-4
+copySign,-0x1.5f988007a55a1p-1,-0x1.5f988007a55a1p-1,-0x1.069d6b7740021p1
+copySign,-0x1.4cf28b55574adp0,-0x1.4cf28b55574adp0,-0x1.6778e69e6539ep0
+copySign,0x1.ebe7db995647dp-3,-0x1.ebe7db995647dp-3,0x1.81096c1fb11cep-2
+copySign,0x1.52e5afde5170dp-2,0x1.52e5afde5170dp-2,0x1.8a52b211e5e23p1
+copySign,-0x1.949c8dcc34bfep0,-0x1.949c8dcc34bfep0,-0x1.8f3553a64e9a3p4
+copySign,-0x1.3c33f5987f788p-4,0x1.3c33f5987f788p-4,-0x1.6e6b1f686a8f3p4
+copySign,-0x1.651f1423e68eap-1,-0x1.651f1423e68eap-1,-0x1.c526e77ba01eap1
+copySign,0x1.77e7bf9e99a76p-5,-0x1.77e7bf9e99a76p-5,0x1.e38cc78fad0c6p-1
+copySign,-0x1.1c181d4e01548p2,-0x1.1c181d4e01548p2,-0x1.7af633d5d0b38p-2
+copySign,-0x1.3001934e6ae0bp-2,-0x1.3001934e6ae0bp-2,-0x1.491f87b4ac373p1
+copySign,-0x1.af547dca7b826p-2,-0x1.af547dca7b826p-2,-0x1.4a4dd74c4d68p2
+copySign,0x1.78dba1b16b7dbp2,0x1.78dba1b16b7dbp2,0x1.6b74066c6b196p1
+copySign,-0x1.380961d62ec0dp-3,-0x1.380961d62ec0dp-3,-0x1.6e6aaee6298edp1
+copySign,-0x1.5cf87826e093ep-1,0x1.5cf87826e093ep-1,-0x1.ad5aa17eda056p-2
+copySign,-0x1.6fc1179d396p0,-0x1.6fc1179d396p0,-0x1.04302fee70a54p2
+copySign,-0x1.390659f7eb4cdp0,0x1.390659f7eb4cdp0,-0x1.8142f4ee52932p0
+copySign,-0x1.457189185be35p1,0x1.457189185be35p1,-0x1.a29b4fbc2cecep-1
+copySign,-0x1.2fdafd8daf546p1,0x1.2fdafd8daf546p1,-0x1.3352829eeb52ap1
+copySign,-0x1.3170c9d66604p-1,-0x1.3170c9d66604p-1,-0x1.153af45d94cb7p1
+copySign,0x1.722586c5396b4p-2,-0x1.722586c5396b4p-2,0x1.23fdf3add3787p-3
+copySign,0x1.d2b1ba3089506p-1,-0x1.d2b1ba3089506p-1,0x1.10002fbd075c2p0
+copySign,-0x1.48dbcf5c8188ep-1,0x1.48dbcf5c8188ep-1,-0x1.99be7ebce555bp-2
+copySign,-0x1.a9a87920c5ce4p3,-0x1.a9a87920c5ce4p3,-0x1.a05b68dd80554p-4
+copySign,0x1.1a9f934df77b5p-2,0x1.1a9f934df77b5p-2,0x1.b025bec52f56dp-3
+copySign,-0x1.a2adfb75ca99dp2,0x1.a2adfb75ca99dp2,-0x1.ba885fb9e404bp0
+copySign,-0x1.e09d728dc57ebp-1,0x1.e09d728dc57ebp-1,-0x1.75b95bff62f6cp-3
+copySign,0x1.c5593cba00eebp-5,0x1.c5593cba00eebp-5,0x1.7fb0e235bc2eep-3
+copySign,-0x1.3e89b0b0ab25fp0,-0x1.3e89b0b0ab25fp0,-0x1.8fa7c9a2f9bedp0
+copySign,-0x1.6faf937ce04c1p-1,-0x1.6faf937ce04c1p-1,-0x1.5feb7bf313fc1p-1
+copySign,0x1.bc23b8cbe4b6p-2,0x1.bc23b8cbe4b6p-2,0x1.19f1f78354f98p-1
+copySign,-0x1.c2119915765e5p-1,-0x1.c2119915765e5p-1,-0x1.876e1aa39077cp-10
+copySign,-0x1.01c346d4d878bp1,-0x1.01c346d4d878bp1,-0x1.d7c1227d6c119p1
+copySign,0x1.8ce2de24cf505p0,-0x1.8ce2de24cf505p0,0x1.198d30e9c11b4p2
+copySign,-0x1.288e3cab6a2e7p-1,0x1.288e3cab6a2e7p-1,-0x1.a89c4e9eb65cfp0
+copySign,0x1.b07ddc10ef97ap-1,-0x1.b07ddc10ef97ap-1,0x1.d789628d9a124p-4
+copySign,-0x1.dd2a148950301p-6,-0x1.dd2a148950301p-6,-0x1.2e6b8091614eap1
+copySign,-0x1.12f308ce41398p2,0x1.12f308ce41398p2,-0x1.bc8b51e9f443p6
+copySign,-0x1.4afaffad92481p-4,0x1.4afaffad92481p-4,-0x1.d89782a668c16p-1
+copySign,0x1.3ba2157bb5a21p-2,-0x1.3ba2157bb5a21p-2,0x1.d6c3f693229b1p1
+copySign,0x1.62c5c83d97087p2,0x1.62c5c83d97087p2,0x1.b1ec78bb1ee77p-2
+copySign,-0x1.1aa870ae181d3p5,-0x1.1aa870ae181d3p5,-0x1.a8c38c3d5764bp0
+copySign,-0x1.13237983c28bap-1,-0x1.13237983c28bap-1,-0x1.073560686b125p2
+copySign,0x1.440485a03c6bep-1,-0x1.440485a03c6bep-1,0x1.6c7ec47e69b2ep0
+copySign,-0x1.6b009e3e24ff3p1,-0x1.6b009e3e24ff3p1,-0x1.3bdf6b2ca1226p4
+copySign,0x1.86b6cc68a7493p4,-0x1.86b6cc68a7493p4,0x1.04b84cf137d19p-1
+copySign,0x1.239128f3f2cfcp-1,-0x1.239128f3f2cfcp-1,0x1.c2e45a93aa284p2
+copySign,0x1.b06c161e3d158p6,0x1.b06c161e3d158p6,0x1.418d5736566b4p1
+copySign,0x1.c4d364c8d6207p4,-0x1.c4d364c8d6207p4,0x1.ba81bd348bd68p-4
+copySign,0x1.e7b1ac8d6a23fp-1,0x1.e7b1ac8d6a23fp-1,0x1.bd3e6e94926ffp-3
+copySign,-0x1.84646cc829cfp-6,-0x1.84646cc829cfp-6,-0x1.067c187661027p0
+copySign,-0x1.1bfebdb2633a7p0,0x1.1bfebdb2633a7p0,-0x1.7a5e223dc1889p-2
+copySign,0x1.69bfe282b29a4p-2,0x1.69bfe282b29a4p-2,0x1.27729dac24612p0
+copySign,0x1.364c8afd2288ep1,-0x1.364c8afd2288ep1,0x1.4939bf2cc79bfp1
+copySign,0x1.1e104e615f229p2,0x1.1e104e615f229p2,0x1.5a0f78ff1b844p0
+copySign,0x1.080264d2974b4p0,0x1.080264d2974b4p0,0x1.48e2c5ad03dcep-2
+copySign,0x1.36ea7ecc7d913p-1,-0x1.36ea7ecc7d913p-1,0x1.5b8e5b16557d9p-3
+copySign,0x1.98ceb0be39d06p-1,0x1.98ceb0be39d06p-1,0x1.fd5fd1a41ade2p4
+copySign,0x1.461791ed70eedp0,-0x1.461791ed70eedp0,0x1.2098034e5257dp-2
+copySign,-0x1.0e863aa823658p-2,-0x1.0e863aa823658p-2,-0x1.6981ad1a51b86p5
+copySign,-0x1.cac1a69192654p-2,0x1.cac1a69192654p-2,-0x1.f55c98e03b68cp-6
+copySign,0x1.3309aa77b2c1ap-2,-0x1.3309aa77b2c1ap-2,0x1.f11564c63426ap-1
+copySign,0x1.edc084fb770ddp-5,0x1.edc084fb770ddp-5,0x1.2b912a59f3388p-1
+copySign,-0x1.b295af3affc24p-1,-0x1.b295af3affc24p-1,-0x1.c8ad5de54acecp1
+copySign,-0x1.43808dc4810f3p1,-0x1.43808dc4810f3p1,-0x1.8541214a13d1ap0
+copySign,-0x1.43990d0fc0ba3p4,0x1.43990d0fc0ba3p4,-0x1.165cc99ddcb41p1
+copySign,0x1.7af9a0494eb75p-2,0x1.7af9a0494eb75p-2,0x1.fca02fa705a9dp1
+copySign,0x1.2876d5adb29f5p-1,-0x1.2876d5adb29f5p-1,0x1.f8df58a3c29dbp-5
+copySign,-0x1.49f5e691137bdp0,0x1.49f5e691137bdp0,-0x1.455ada7c15032p-1
+copySign,-0x1.b5528b875cf65p1,-0x1.b5528b875cf65p1,-0x1.c5ea3878debd1p1
+copySign,-0x1.9ce99488b7ab4p3,0x1.9ce99488b7ab4p3,-0x1.8889d891b4a49p0
+copySign,0x1.b904b7fb7b589p-2,-0x1.b904b7fb7b589p-2,0x1.995da0765a726p-2
+copySign,0x1.9bdff08e77031p-2,0x1.9bdff08e77031p-2,0x1.8ec0666ac4f3fp-2
+copySign,-0x1.b8aee5bca4d84p-1,0x1.b8aee5bca4d84p-1,-0x1.9fdaa7abca4bcp0
+copySign,-0x1.f827acaf13633p4,0x1.f827acaf13633p4,-0x1.60d4ca7425722p-2
+copySign,0x1.1cc9b76dd0a65p0,0x1.1cc9b76dd0a65p0,0x1.1833bb6dccccdp-2
+copySign,-0x1.5748ad869338p4,0x1.5748ad869338p4,-0x1.d9c10e045123ap0
+copySign,-0x1.2743ef4061547p-1,-0x1.2743ef4061547p-1,-0x1.ac1f4d91209c3p-2
+copySign,0x1.bbb679a1647bbp-2,-0x1.bbb679a1647bbp-2,0x1.08b5bf8219ce6p0
+copySign,-0x1.069560250720cp0,0x1.069560250720cp0,-0x1.eba02acdec778p-1
+copySign,-0x1.365d3d73c52eep0,-0x1.365d3d73c52eep0,-0x1.818c200aa658ep-1
+hypot,0x1.8017a82d3363ep-3,0x1.035c9512d358dp-3,-0x1.1b4ca1504820ep-3
+hypot,0x1.bd197423d6635p0,-0x1.3179605bcd7dcp0,-0x1.43ba11665365cp0
+hypot,0x1.8aeac7c229b6p0,0x1.4fe074e3fd676p-1,-0x1.656e15ef969b7p0
+hypot,0x1.3580d43a93011p0,0x1.db8918b2fdcd8p-1,0x1.8c46c14d5afd9p-1
+hypot,0x1.373c78d07e52ep2,0x1.3641d487af99ap2,0x1.8aae0a08413d2p-2
+hypot,0x1.ad5fee98eb29bp-1,-0x1.accbc0217cb2p-1,0x1.649a1fcc0c4cbp-5
+hypot,0x1.7f5068cf4051bp1,-0x1.51fcf9b757d42p-3,-0x1.7ebb48fe34bf4p1
+hypot,0x1.58bc792d25202p2,-0x1.583c47afb2afep2,0x1.29307fc5a7ce2p-2
+hypot,0x1.53d3ad09df1fp1,0x1.073cf82be91edp1,-0x1.add3e494d4037p0
+hypot,0x1.016262e6307c2p1,0x1.28b80cd44885ep0,-0x1.a4a5da3ce316cp0
+hypot,0x1.0e4d8b6aa5e08p0,0x1.311064835aa81p-1,-0x1.be4ec7072592ep-1
+hypot,0x1.c11c1064ada32p4,0x1.a29a96a022628p-3,-0x1.c119040ae336dp4
+hypot,0x1.36c5961898dcfp2,0x1.34faef20b84efp1,-0x1.0da6c8cf17ee6p2
+hypot,0x1.4f3ff6aae5b99p0,0x1.040ee18ba0b07p-3,-0x1.4dab8c8f91fc1p0
+hypot,0x1.150ca9e71cd52p-1,-0x1.018ffca31383ap-1,0x1.984636905034cp-3
+hypot,0x1.bbb863c31d863p0,-0x1.bad342a98f7a6p0,-0x1.c2b4118dcde48p-4
+hypot,0x1.0c4a62f52adaap-1,0x1.0b1407c9dad71p-1,0x1.979f0307c39c2p-5
+hypot,0x1.57706318dcb2ap0,0x1.0f04ea72fde9p0,-0x1.a5e53d8a1dfdbp-1
+hypot,0x1.267541d554099p0,0x1.24faed88c1f27p0,0x1.d76dc40c15bf5p-4
+hypot,0x1.ec90fa1bf5a7fp-1,0x1.1eaa2c83eeeb3p-1,0x1.908e450f1847bp-1
+hypot,0x1.8c991ba802047p2,0x1.8651546f312e4p2,-0x1.19338343ba90cp0
+hypot,0x1.aad92cdc39b04p-2,0x1.152c91603038ap-2,-0x1.449d18ccb278cp-2
+hypot,0x1.21631ed90a577p1,0x1.a5bdc726dc45cp0,-0x1.8c604a66e05fap0
+hypot,0x1.1f21086b6526ap8,-0x1.c71e00f4249e2p-2,-0x1.1f20f1e04804fp8
+hypot,0x1.ab87a4b1099ap2,0x1.81a3fc7bb3c75p-1,-0x1.a8cdb4f1abeb8p2
+hypot,0x1.2281b0a4e7f7bp-2,-0x1.f81b8704b0955p-3,0x1.20e16841b160dp-3
+hypot,0x1.b65b179cf8c09p0,0x1.c06d19a70a803p-1,-0x1.78ace437034e7p0
+hypot,0x1.15dcce3c9decbp2,0x1.5bdf98fb6e2acp0,0x1.07e6d32abf5f7p2
+hypot,0x1.02bd3d2489d54p3,0x1.ea299155c629bp2,-0x1.4bcfd37dbd568p1
+hypot,0x1.186d9f5735b5fp-1,0x1.5c2c052c73881p-5,0x1.179527dc936bep-1
+hypot,0x1.43cee56f1a6dap1,0x1.2a16c30a612b2p1,-0x1.f9e19c365281ep-1
+hypot,0x1.20c79ed160387p2,0x1.1fee89d5737ecp2,0x1.61d3c2bd3d1efp-2
+hypot,0x1.9f2c1f990436cp-1,0x1.7564938f7927dp-3,-0x1.948abdc960078p-1
+hypot,0x1.93d9b49c8582fp-1,0x1.25d4214478fc7p-1,-0x1.150e45cd98ec1p-1
+hypot,0x1.268de963b13ccp-1,0x1.e19dc7b818391p-4,-0x1.20562925e0f3dp-1
+hypot,0x1.7bc04cf01f1dfp1,0x1.127b246843ab5p0,0x1.6215b0dc45a05p1
+hypot,0x1.493e2cba014fdp0,-0x1.98cea00a3d00cp-1,-0x1.021bcd4dfc3fep0
+hypot,0x1.074a8b6052eddp0,-0x1.0123efcaacc6bp0,-0x1.c49fdc1d31fc7p-3
+hypot,0x1.f87d0d411fb77p0,0x1.93dbe10d976c8p0,-0x1.2e55d460a68c1p0
+hypot,0x1.21b01adc7d5d4p1,0x1.09326ba7a131fp0,-0x1.018f261f8bb48p1
+hypot,0x1.a4091c6c7c7b5p1,-0x1.d698ccadef1ecp0,-0x1.5bf17c59a59fbp1
+hypot,0x1.a8da74b2de311p-1,0x1.d585820bc3e5cp-2,-0x1.6219f0919d956p-1
+hypot,0x1.e58e00daab4a8p-1,-0x1.8b7fff8553f0cp-1,0x1.19adda623b4e9p-1
+hypot,0x1.3c9125f484936p6,-0x1.3c90d882521c8p6,0x1.badef208bfb0fp-3
+hypot,0x1.ea3011c0f543bp-1,-0x1.bffa7db8de42cp-1,-0x1.8dfdda7c84022p-2
+hypot,0x1.c8417faa23771p0,-0x1.955d9ddff7839p0,0x1.a2cc6f7327644p-1
+hypot,0x1.5015828227fb4p0,0x1.0bc0514d1c9c5p-2,0x1.4959bf24e337fp0
+hypot,0x1.990caeba62831p-2,-0x1.71b0789a25c69p-2,0x1.5e267e0dfc068p-3
+hypot,0x1.7fdf153ba4ff5p2,-0x1.7e1ee76937d61p2,0x1.24f5b006b7dc6p-1
+hypot,0x1.18b4266b31b5p-1,-0x1.6ac13bedf55a7p-3,0x1.09a68045c0587p-1
+hypot,0x1.a535e62cc0e8dp3,0x1.0d68613d532b2p0,0x1.a3dcb7e793c5ap3
+hypot,0x1.51c58e272bebdp1,-0x1.493a047c97239p1,0x1.2dfb3b898aa8ep-1
+hypot,0x1.9fbba7b9f3223p0,-0x1.ab81047c0cb26p-2,0x1.91c2adf1cf61bp0
+hypot,0x1.c3cae8c055d28p-1,0x1.2b932f024eecap-1,0x1.52303de03e6cbp-1
+hypot,0x1.33cd3514c8c65p2,0x1.69ffa312bee3dp0,-0x1.263253bcf5adp2
+hypot,0x1.09dc1b47d4ff8p0,0x1.b30d7d6238dc5p-2,0x1.e53049c9b3acfp-1
+hypot,0x1.196d25030df8bp1,0x1.031723fc14628p1,0x1.b7820e016903bp-1
+hypot,0x1.9522414a32e74p0,-0x1.8572babad0f62p0,0x1.be8f8e453bc15p-2
+hypot,0x1.2f6cd48321bd7p1,-0x1.3cb3f1ad69bd3p-1,-0x1.24e9b837ea81ap1
+hypot,0x1.468c5be6ec2e4p1,-0x1.62dcd50a03becp-2,0x1.438580f9f8247p1
+hypot,0x1.9da77b392891fp-1,-0x1.6d574288b80f7p-1,0x1.83ffd55cb8a81p-2
+hypot,0x1.5176d43794d74p2,-0x1.5fac9f69cf192p-2,0x1.50bf648ff6d77p2
+hypot,0x1.70b66b40649d9p1,-0x1.6cb8e89367344p1,-0x1.b0c8f5127f707p-2
+hypot,0x1.234cbaed97268p1,-0x1.f7503d9f20336p0,0x1.256c922374787p0
+hypot,0x1.6d8784c3d84f3p1,0x1.5392d579bf882p1,0x1.0e90ef5859ae4p0
+hypot,0x1.e07408fa3aa64p-3,-0x1.a68e1b31b06b9p-4,-0x1.af8172d58ce1fp-3
+hypot,0x1.521dfd2317ef8p1,-0x1.432f3b3e0759dp1,-0x1.8d7de6d9c2bd8p-1
+hypot,0x1.6c63f48e45a31p-1,-0x1.6faf2282d0664p-2,0x1.3a9d661f261cap-1
+hypot,0x1.674bdc02e9a0bp1,0x1.674812a58db7ep1,-0x1.a14d5314f5264p-6
+hypot,0x1.f270ac8ef01b8p4,0x1.415b60ca7fcb2p-1,-0x1.f256c5e73cda2p4
+hypot,0x1.b7d8a2fbd6d1p2,-0x1.bffec7a06d6b7p-3,-0x1.b79f95d650223p2
+hypot,0x1.cd258330efbf7p0,0x1.44c8adf48bcecp0,0x1.475ee2b6c13c9p0
+hypot,0x1.a5506d089e931p0,-0x1.6df2b4cc974c5p-1,0x1.7b81fb6e663b1p0
+hypot,0x1.0014714db98e5p4,0x1.29f330b17d953p-1,-0x1.ffd230a5359bbp3
+hypot,0x1.acec442e7685cp7,-0x1.56f7de02b4136p-3,0x1.acec3b9c8dd78p7
+hypot,0x1.bd93ebfa0ed76p0,0x1.ad647304443a9p0,-0x1.dc035804e718ap-2
+hypot,0x1.8e03b5175cfb5p4,-0x1.b59106fcb173fp0,0x1.8d12e5f9f295ap4
+hypot,0x1.75941a32ed72ap0,0x1.880260c6fc7d8p-3,-0x1.7259d593af329p0
+hypot,0x1.a6bb3a0e03076p-1,0x1.8e6d7ada69108p-1,0x1.1a8a38056a267p-2
+hypot,0x1.aa5fffbbdfc31p-1,0x1.a45685abf4b7ap-1,-0x1.1dfb80efd3d33p-3
+hypot,0x1.b2d38ba4bfb8fp0,0x1.69617ec3eddc1p0,-0x1.e3a4d310e1969p-1
+hypot,0x1.a49fb548a8466p13,-0x1.6f75774d5f61ap-1,0x1.a49fb53ea02a6p13
+hypot,0x1.dd09a931578dp-1,-0x1.2082ff195f618p-1,-0x1.7be712002fbf2p-1
+hypot,0x1.401b22ceafd65p2,0x1.304116b6ca78bp2,-0x1.8df04eef5e3cep0
+hypot,0x1.39419858ee9dbp0,0x1.b05855f0ecfa8p-1,0x1.c56d30ad78eecp-1
+hypot,0x1.36ba750030663p2,-0x1.2eca04c9a45c9p2,-0x1.172a7006032acp0
+hypot,0x1.e4416f30acd7p0,-0x1.af16b5e1c9306p0,-0x1.b9351d8fcde7fp-1
+hypot,0x1.5f0dd88adfb2bp4,0x1.f9e4410be1debp-3,0x1.5f08267385e12p4
+hypot,0x1.7f6bd3646c94ap1,-0x1.abf9bcbba3bedp0,-0x1.3e270dc19ed1ap1
+hypot,0x1.1dc2e97a10a62p2,0x1.1a4350d7d067p2,-0x1.649f8a6ad3ab9p-1
+hypot,0x1.2d689682c167p2,0x1.2777997d3769p2,0x1.dc674976e59b6p-1
+hypot,0x1.3e109e9759f4cp-1,-0x1.dfc4c4f6c55d6p-4,0x1.385c2844181a3p-1
+hypot,0x1.f9056bb6ba48dp0,-0x1.b8f9d9f98d7p0,0x1.ec496ad9afd83p-1
+hypot,0x1.0b15ce9210793p3,-0x1.0aa38f9333759p3,0x1.edddac1222d8ap-2
+hypot,0x1.465d27068cb34p-1,0x1.033f2dfa7587ap-1,-0x1.8c81d44d2edd7p-2
+hypot,0x1.35f9b4f20ff7cp4,0x1.33aba6f1d125cp4,0x1.2dd8aa83efbeep1
+hypot,0x1.087346cd87a42p1,0x1.749d839bdf0bfp0,0x1.775bab304f38dp0
+hypot,0x1.a89eada56eed3p-2,0x1.9b91c9774806bp-2,0x1.a1da5c1595ca8p-4
+hypot,0x1.041e756d2a036p-4,-0x1.02b1e5879107ep-4,0x1.b2e6f33868b43p-8
+hypot,0x1.2415d267484d5p2,-0x1.1fc31fd3b33dfp0,-0x1.1b1650be2a772p2
+hypot,0x1.045e089a1ae7cp5,-0x1.044e7f6844b59p5,0x1.67c23d0c7967ep-1
+hypot,0x1.ee981daa3af01p-3,-0x1.da6609cbf5c63p-3,0x1.17c808e69464dp-4
+hypot,0x1.76c197cc053bcp2,-0x1.6b80ab7a7dcabp2,-0x1.6c98345550a4dp0
+hypot,0x1.26dd9f912c6d3p1,0x1.b4c2ecd022fc1p-6,0x1.26d891a499cddp1
+hypot,0x1.37e3348a3266dp-1,-0x1.156481f292284p-1,-0x1.1d259111e5715p-2
+hypot,0x1.3119960ee85dap1,0x1.b4a7a666a7cep-5,-0x1.31060df4f99edp1
+hypot,0x1.1519f4cf0ea02p1,0x1.05949b6f7ac3bp0,-0x1.e8960a19b528cp0
+hypot,0x1.fb63131444d72p-1,0x1.3ddacbc4d63e9p-3,0x1.f52036c5be9fcp-1
+hypot,0x1.8e62df654957cp1,0x1.546b78d0e40abp1,0x1.9de377eedc526p0
+hypot,0x1.168806ceaf54ap1,-0x1.c15b0d201cda2p0,-0x1.493d317cda155p0
+hypot,0x1.3225c5f998373p0,-0x1.2830126a5c178p0,-0x1.35d0e543809e4p-2
+hypot,0x1.ad83881035fa4p-1,-0x1.25c678eb6e408p-3,0x1.a7302276676d9p-1
+hypot,0x1.926e8d9f40793p-2,0x1.2f4c778b2da78p-4,-0x1.8b395829adc47p-2
+hypot,0x1.2d3e7ab1cf40dp1,0x1.e2a1b88474772p-2,-0x1.27242d9f3bd04p1
+hypot,0x1.38cae4e02bff1p4,-0x1.38411d9304aa3p4,-0x1.257570c64c2f3p0
+hypot,0x1.71ca45acb60e9p-3,0x1.0324663656b88p-5,-0x1.6c1221fc33928p-3
+hypot,0x1.01432baacbdc3p1,-0x1.50a65058c6723p0,-0x1.851ae4d375c3bp0
+hypot,0x1.13d28ce29c231p2,0x1.11265e394534ap1,0x1.df4587b32d3b1p1
+hypot,0x1.afc91f2dd16d6p0,0x1.a6fbb94c03904p0,0x1.5af68f6d9bbcp-2
+hypot,0x1.bff22080c3055p0,-0x1.38847b1044ce5p-5,-0x1.bfd6de9a148cp0
+hypot,0x1.c47f5855fa922p3,-0x1.507a0b8186773p-3,0x1.c47786a33add8p3
+hypot,0x1.66a689bcf92d7p-1,0x1.191b9b482a7fbp-1,-0x1.bd75b0d18cea2p-2
+hypot,0x1.02575fd2bf78ep4,0x1.817ccc59a8271p-3,0x1.0252e15d0388ep4
+hypot,0x1.d6ee5545f763ap0,-0x1.9bf454314d092p-2,-0x1.cb881aadaca7dp0
+hypot,0x1.81cf4cb57f074p1,-0x1.ee7fc6f4fff17p-1,0x1.6d7789a8f0cbfp1
+hypot,0x1.58a4d388253bfp1,0x1.d92b7f594eef9p0,-0x1.f539eceee06fap0
+hypot,0x1.aaf11e3d43fa6p4,0x1.aaf0b4237b71ep4,0x1.2cfe8369e23c4p-4
+hypot,0x1.43119ce321232p1,-0x1.36ad99667b8d3p1,0x1.627563d2d87cfp-1
+hypot,0x1.3a67807d50897p1,0x1.d94d0af047ce5p0,0x1.9dfd0e6432532p0
+hypot,0x1.c6c8ce885af15p0,-0x1.f6a2103fd574dp-1,-0x1.7b096810d00bfp0
+hypot,0x1.7eb6eb5b2d209p2,0x1.75fe4773e99p2,-0x1.44f29d9b38acap0
+hypot,0x1.1174ddb59c62bp1,0x1.3b812b948c3d1p0,0x1.bebbbec78a821p0
+hypot,0x1.8b090f8456993p0,-0x1.8422e7e1768dp-1,-0x1.58144753460ebp0
+hypot,0x1.b8e5e3a91d0dbp1,-0x1.d4a84fc843599p-1,-0x1.a90b9d04bd13ep1
+hypot,0x1.59a78eb87b229p0,-0x1.048bc8710db5cp-4,0x1.59454e6a140b1p0
+hypot,0x1.1fecf764af115p1,0x1.3c5c7003e5afep0,-0x1.e12a681e8034ep0
+hypot,0x1.7f118ef06aec5p0,0x1.86df8d0a2c418p-2,0x1.726532058c327p0
+hypot,0x1.f8f42b5158094p1,0x1.8209e521b3935p-2,0x1.f6a48f603e064p1
+hypot,0x1.32115d8e1bc4dp3,-0x1.f8d14cb4cb74ap0,0x1.2b7e06b2fbd07p3
+hypot,0x1.6b950430e37dbp0,-0x1.44a5a8119fdb4p0,0x1.47641324ef577p-1
+hypot,0x1.c1f2b2ff94756p2,-0x1.8886fc5e32efp2,-0x1.b7e3919de6f4ep1
+hypot,0x1.4acf61319f386p1,0x1.41fa14e8008aap1,0x1.2fbdea47bd94fp-1
+hypot,0x1.cc0c55809e1a6p0,0x1.81703e54c1c4p0,-0x1.f6521b1f1354dp-1
+hypot,0x1.99fdf6a85eef6p1,0x1.1e8543c9774b4p0,-0x1.8025fb6a780cep1
+hypot,0x1.8c40f4899458bp1,-0x1.f74893f7b1928p-1,0x1.77bf572b54b79p1
+hypot,0x1.f35832c710289p0,-0x1.28d787a926bcep-1,-0x1.dcc6e0481f2f1p0
+hypot,0x1.4648f024ad8dap0,-0x1.2683ffd9a9185p0,-0x1.18df74dfc99cbp-1
+hypot,0x1.63ef5de5b5ee8p1,-0x1.0db098198b967p1,-0x1.d092d38c00816p0
+hypot,0x1.104d8ab3eb11bp3,0x1.4a90dcca30dcep-1,-0x1.0f849acddd53ap3
+hypot,0x1.2907643018514p2,-0x1.25bdc94ce5d1cp2,-0x1.608f72e4bd0fap-1
+hypot,0x1.56a72ae4b9e94p0,0x1.c172c5b8dc582p-6,0x1.5694be2afe189p0
+hypot,0x1.7c913da22a1b4p0,0x1.6ceabebeb1aa6p0,-0x1.b00ebbe92fe9ep-2
+hypot,0x1.9b79e9c4011d4p0,0x1.424af6585a36ap0,-0x1.ff9ffbffd1331p-1
+hypot,0x1.b3821e3ebf1b5p0,-0x1.2687bc1b2e4cdp0,0x1.40cf80485c17bp0
+hypot,0x1.cde6ed75e0459p-1,-0x1.94fdeaec94d8cp-1,0x1.bc3ae9e16d5f8p-2
+hypot,0x1.62e1a9b5bd5b4p-1,0x1.14bc4656a0dddp-6,-0x1.62c6af2ad15d4p-1
+hypot,0x1.843071da576b2p0,0x1.517b32a05ad5fp-1,0x1.5d989f0bed307p0
+hypot,0x1.ea4dd008eaa16p1,0x1.e98659e3b8254p1,0x1.ba15766e322d9p-3
+hypot,0x1.eccb4068cf0d1p-1,-0x1.7feee220563bp-1,0x1.34ef8588ec801p-1
+hypot,0x1.13ac3ec05c11dp0,0x1.a8468d66bd8e7p-1,0x1.6018d1abe1a61p-1
+hypot,0x1.e602f9743bb51p0,0x1.3884aef9b9575p0,0x1.74358720cd00fp0
+hypot,0x1.919bb779dea3dp0,0x1.561919639cff9p0,0x1.a4c0985f4044p-1
+hypot,0x1.79fae38a64176p0,0x1.cc02224bb6489p-1,0x1.2bf1ea03166e8p0
+hypot,0x1.9e419a0dfc32p0,-0x1.2cc3028a36a64p-1,-0x1.81ff4870c85ccp0
+hypot,0x1.eef893d3dcbe6p2,-0x1.e6f1a4c783a04p0,-0x1.dfc46cc74dd64p2
+hypot,0x1.d2c1e613e4a55p-1,0x1.d158adbf0339cp-1,-0x1.22207fa622328p-4
+hypot,0x1.894e2337fc0d9p-1,-0x1.5b60941b5241p-1,-0x1.70e12d3fa5db9p-2
+hypot,0x1.5b1ab4e7fba04p-2,-0x1.4c42574154c9p-2,0x1.91b3aad06999bp-4
+hypot,0x1.c6037ec51f64cp1,0x1.b9275edc200e8p1,-0x1.ad2bc12e2599p-1
+hypot,0x1.af2b1a2685f99p0,-0x1.ab9b0e474d967p-3,0x1.abd7ac669b2d2p0
+hypot,0x1.48a9c2589c728p0,0x1.1dcef0625d0a2p-1,-0x1.27f825ee39e79p0
+hypot,0x1.3659f059cad77p-1,0x1.417f43db8ce85p-4,-0x1.33bd0960ab133p-1
+hypot,0x1.fe90bc6be9ef4p1,0x1.00e72de68d745p1,-0x1.b9391d6441499p1
+hypot,0x1.1568085ae001fp1,0x1.23cd4482baa0ep0,0x1.d7e0c765b481fp0
+hypot,0x1.a047c49b0bde1p-2,0x1.47511ca4d566ep-2,0x1.0133c8166661ap-2
+hypot,0x1.10cce99512b87p0,-0x1.107bb18770d41p0,0x1.a4e42adbe428dp-5
+hypot,0x1.457a166cb4078p3,-0x1.4579ff77f47a2p3,0x1.e8f8b25e670edp-7
+hypot,0x1.952b55bc85bd5p2,-0x1.951e3c55c86c3p2,0x1.9c1986dfb62bfp-4
+hypot,0x1.4ed6383e6299cp0,0x1.43d537aa1be88p0,0x1.548a19f98e3a8p-2
+hypot,0x1.000528b3f0ed7p1,-0x1.8a727b769138dp-3,-0x1.fda92ebdb0fd4p0
+hypot,0x1.978ed2893e4ecp-1,0x1.c0875a3cb510bp-2,0x1.544e9fab93924p-1
+hypot,0x1.2f1f72c453c24p2,0x1.e9d79a82803b3p0,-0x1.1548ea1f30464p2
+hypot,0x1.15518286d99e5p1,-0x1.0941e6e741adbp1,-0x1.439468d92ee49p-1
+hypot,0x1.50a58b6e00083p0,-0x1.8f9811df2239ap-2,-0x1.417b9ffd99018p0
+hypot,0x1.784f5a15004bbp2,-0x1.41da2a0bf3807p-1,0x1.76273812c2c52p2
+hypot,0x1.70af7ebdaf6ccp1,0x1.e5b3ebf06c063p0,0x1.156711d3ca2ccp1
+hypot,0x1.0d938539dbe96p0,-0x1.0eb2ac33bf57cp-2,-0x1.04f18a62ee1adp0
+hypot,0x1.f62262f339a7ep0,0x1.6100184e24683p-1,0x1.d61792743ce6dp0
+hypot,0x1.793302d58395fp2,-0x1.96bbe5f70caecp-3,-0x1.78fc2c3f53676p2
+hypot,0x1.2cc612f04cb84p1,0x1.161ad1d26afb7p1,-0x1.ca3719322ca2ep-1
+hypot,0x1.eb865a4473334p2,0x1.ea4e0f45d30bcp2,-0x1.14dd9faadeda6p-1
+hypot,0x1.374733be9f265p3,-0x1.36eb870cf1d02p3,-0x1.dda8f30fd43f9p-2
+hypot,0x1.00d5ba2f84b1dp5,-0x1.00d398c19548dp5,-0x1.08a750aec5e2cp-2
+hypot,0x1.30335553c8f9bp3,-0x1.efda9ea09b8d6p2,-0x1.6088dc8957025p2
+hypot,0x1.a0d8bd280e2c5p0,0x1.8f1ee95246894p0,0x1.e10fafc6cb42ap-2
+hypot,0x1.50eedd03ad891p0,-0x1.c0f1d9414c899p-1,0x1.f689a99fe4f7fp-1
+hypot,0x1.411383f09b35cp0,-0x1.244c4d4b2c51p-4,0x1.408e5b9ef6893p0
+hypot,0x1.937fffc74dd4fp1,-0x1.6658a91669e4cp1,0x1.72f2113c8c03dp0
+hypot,0x1.0dbe619dab1a1p2,-0x1.b3821369a8b0fp-1,0x1.08317c141257bp2
+hypot,0x1.ba6329899a6ep0,0x1.02970362943cep0,-0x1.66f09bd0d6d81p0
+IEEEremainder,0x1.92c6b518a96cp-4,-0x1.95cc024bc2e3dp2,-0x1.12ba136ac3b1p0
+IEEEremainder,-0x1.9a2601ee0b37cp-3,0x1.68e971ffed245p0,-0x1.12c976d3c9b23p-1
+IEEEremainder,-0x1.59e4503ff371p-3,-0x1.59e4503ff371p-3,-0x1.0c912a93f545ap-1
+IEEEremainder,-0x1.1741eb551c2a8p-3,-0x1.7b22c6245681cp0,-0x1.583a88b9b2fc7p0
+IEEEremainder,-0x1.d7104568a7836p-1,-0x1.d7104568a7836p-1,0x1.1165425b27d26p3
+IEEEremainder,-0x1.c961b96a089p-8,-0x1.3cc42fab56789p0,-0x1.3afacdf1ec7p-1
+IEEEremainder,0x1.67ad60a725d94p-3,-0x1.9e305f6421286p-1,-0x1.f81bb78dea9ebp-1
+IEEEremainder,0x1.98ebb4994eb7p-2,-0x1.16cff8747f0bep2,0x1.95d39a52c549cp0
+IEEEremainder,0x1.ae51d87c54eb6p-7,-0x1.e04eec4369cp-1,-0x1.d8460389127fbp-6
+IEEEremainder,0x1.530e632e0fdep-5,0x1.7a4ee15cae799p1,0x1.4b90952aa1facp-3
+IEEEremainder,-0x1.125599ee187fp-2,-0x1.5d9b3beed2a9fp0,0x1.1905d5734c8a3p0
+IEEEremainder,0x1.bf7034499694fp-6,0x1.bf7034499694fp-6,0x1.ebb4f6d58bb0bp0
+IEEEremainder,-0x1.a5151b60d8bbp-7,-0x1.4aeaf96c5ad82p0,0x1.766ea3aaf82c3p-3
+IEEEremainder,0x1.a1abeca2f5a04p-1,0x1.a1abeca2f5a04p-1,0x1.89d9fa4183389p7
+IEEEremainder,0x1.be4eb07f74d0bp-2,0x1.be4eb07f74d0bp-2,0x1.eaf676f43fb5ep-1
+IEEEremainder,0x1.3817ca0dd4788p-2,0x1.05a60fc50797fp2,-0x1.42db6edae315ep0
+IEEEremainder,0x1.5727f14b4a2d4p-2,-0x1.baa350a59c65ap0,0x1.6048ddfaf4a0ap-1
+IEEEremainder,-0x1.560ac9f65ba88p-2,0x1.f9013c566b5c8p0,0x1.2741f76a01235p0
+IEEEremainder,-0x1.c209a136b2107p-3,-0x1.c209a136b2107p-3,-0x1.bf8cef105da2bp-1
+IEEEremainder,-0x1.8a0951dd94f8p-4,-0x1.dbb3ba40684ccp1,-0x1.cf636fb17ba5p-1
+IEEEremainder,-0x1.1aa58e7a688dp-3,0x1.78312de742afcp-1,0x1.beda9185dcd3p-1
+IEEEremainder,-0x1.6766e2484b6e6p-2,-0x1.6766e2484b6e6p-2,0x1.577d4e4f0a8adp3
+IEEEremainder,-0x1.c53f47ce2dcep-4,0x1.511dfb3f748bp0,-0x1.6d71efbc5767ep-2
+IEEEremainder,0x1.9e954913c2dd4p0,0x1.9e954913c2dd4p0,0x1.53fb22fb97bp2
+IEEEremainder,-0x1.355a2d8403ea8p-3,-0x1.25c864b796e12p2,0x1.7ad219b9f3ad1p-1
+IEEEremainder,-0x1.34dbe8a6a7924p0,0x1.109179f49d05p1,-0x1.aaff6e47f0ce2p1
+IEEEremainder,0x1.ec34fbb4845b4p-3,-0x1.146ddb5d93238p-1,-0x1.8f7b1a4ab43a5p-1
+IEEEremainder,0x1.34d78f654359p-3,0x1.df2ba06f0eedp-1,0x1.91f5bc95be16cp-1
+IEEEremainder,0x1.4602d01729278p-1,-0x1.169c4aaf3aaa2p1,0x1.681cfeb504f4p0
+IEEEremainder,-0x1.3e96fbbad1928p-4,0x1.1936c90d6d1ccp1,-0x1.843a0139af8c7p-1
+IEEEremainder,0x1.e7de6e593b4c9p-1,0x1.e7de6e593b4c9p-1,-0x1.f4fed08490e1ap3
+IEEEremainder,0x1.3af0189c84d26p1,0x1.3af0189c84d26p1,0x1.7b6bd7a20d154p4
+IEEEremainder,0x1.7d2d2251f0754p-1,0x1.7d2d2251f0754p-1,-0x1.9c6393376bfd1p0
+IEEEremainder,0x1.a31c623321f7cp-1,-0x1.b9a70bc0f5db9p1,-0x1.11371226df2ccp2
+IEEEremainder,-0x1.0cd0bd0e6842p-10,0x1.a6e596084c617p-1,-0x1.d3395f56fb20ap-9
+IEEEremainder,-0x1.64ca49c110acp-16,0x1.07e061bfc14e8p-3,-0x1.d1f4946d915f6p-11
+IEEEremainder,-0x1.c4452529a9659p-2,0x1.f5555f0474e8bp-2,-0x1.dccd42170f272p-1
+IEEEremainder,-0x1.60cbc9caaa554p-7,0x1.bc5c37443371ap-3,-0x1.0a851da51131bp-5
+IEEEremainder,0x1.d171a1425a2a2p-4,0x1.d171a1425a2a2p-4,0x1.b32fd3630b0a2p-1
+IEEEremainder,-0x1.08655b374b8ccp-3,-0x1.1ec25309b279fp0,0x1.fb6b4f459210bp-1
+IEEEremainder,0x1.be5e794c843p-5,0x1.1b14147e07b68p8,0x1.0c594009b566cp0
+IEEEremainder,-0x1.633debecdeeep-4,-0x1.4775fe0141a8p0,-0x1.31421f4273b92p-2
+IEEEremainder,0x1.f6dba8e8a3c8bp2,0x1.f6dba8e8a3c8bp2,-0x1.016df1a64bdc5p5
+IEEEremainder,-0x1.221bc0b1a575p-1,-0x1.3304df061564ap3,-0x1.812ed94ea411cp0
+IEEEremainder,0x1.4249f849fd958p-5,0x1.f1e7f8eda3c1ap-2,0x1.c99eb9e4640efp-2
+IEEEremainder,-0x1.6ca2e52eb0cf8p-4,0x1.42e03452c82bep-1,0x1.707490f89e45dp-1
+IEEEremainder,-0x1.111fa3d8ce6bp-2,0x1.ad3896820fcb4p0,0x1.f1807f784366p0
+IEEEremainder,0x1.6aa7b57fa52c9p-6,0x1.6aa7b57fa52c9p-6,0x1.0a8a01b31c07ap-2
+IEEEremainder,0x1.d0e82b44db0d8p-3,0x1.01dd957f2f574p0,0x1.8f81202d27eb2p-1
+IEEEremainder,-0x1.eba043b61e22bp-2,-0x1.eba043b61e22bp-2,0x1.823946b1a8b2dp5
+IEEEremainder,0x1.8f3a751f5e40dp-1,0x1.8f3a751f5e40dp-1,-0x1.11254ed0e4508p1
+IEEEremainder,0x1.8f7337e12436p-2,0x1.5fbe1b7bb322fp1,0x1.2dcfb47f8e9c3p0
+IEEEremainder,0x1.801173086a19cp-2,-0x1.f28701e56f1acp-1,-0x1.5947ddb4d213dp0
+IEEEremainder,0x1.2d16336b4f27p-5,-0x1.2761251b0a27cp5,0x1.3636fe96f8a33p-2
+IEEEremainder,0x1.0e9be76ca753p-2,-0x1.2191cbc42d8bbp0,0x1.6538c59f57607p-1
+IEEEremainder,0x1.f06beaa1ecffp-4,0x1.2340bf87d2f7dp3,-0x1.486d9b1535d8fp-2
+IEEEremainder,-0x1.f2bfee626cf63p-1,-0x1.f2bfee626cf63p-1,-0x1.f81068e93d56ep5
+IEEEremainder,0x1.15cf59d769c4ep-3,0x1.15cf59d769c4ep-3,0x1.b1ca867b89e08p0
+IEEEremainder,-0x1.80addfdd0941p-4,-0x1.80addfdd0941p-4,-0x1.005e82dd26f59p1
+IEEEremainder,0x1.24aafaa91869fp0,0x1.24aafaa91869fp0,0x1.7dfab3cc95b52p2
+IEEEremainder,-0x1.f92f4d9bed0cp-3,-0x1.1bb7032f2fbc6p1,0x1.5030131c968f8p-1
+IEEEremainder,-0x1.b4c7cdb3ae61cp-2,-0x1.b4c7cdb3ae61cp-2,0x1.325583f80f736p0
+IEEEremainder,-0x1.b8c5db7d4a0ap-5,0x1.d7cf470433cd5p-1,0x1.4ce7c328059eap-3
+IEEEremainder,-0x1.4f82aca892d2p-5,0x1.2fe0b25c9b32p1,0x1.9c28fc1451fc6p-1
+IEEEremainder,-0x1.39acd6a8b27c5p-3,-0x1.39acd6a8b27c5p-3,-0x1.7af77e4a212e7p-1
+IEEEremainder,0x1.8c0696e5b34e9p-2,0x1.8c0696e5b34e9p-2,0x1.9b7f48ed07846p-1
+IEEEremainder,0x1.698974bdc50fp-9,-0x1.c0c8dfb7b7bb9p-1,-0x1.0ac88a2d4f1cdp-5
+IEEEremainder,0x1.9510bee0122a8p-3,-0x1.5ab25b780c4f5p0,0x1.8d5473540e94ap-1
+IEEEremainder,-0x1.9a93749e545a4p-1,-0x1.9a93749e545a4p-1,0x1.d2bfce6af6e8bp0
+IEEEremainder,-0x1.1c1b92874640bp-2,-0x1.1c1b92874640bp-2,0x1.7164c361b4fb2p-1
+IEEEremainder,0x1.9ab124bd90451p-2,-0x1.b7713f10f18cfp-2,0x1.a91131e740e9p-1
+IEEEremainder,-0x1.de23f63acdb76p-4,0x1.b80bd10967ca1p-3,0x1.538ee6136752ep-2
+IEEEremainder,0x1.2aaf4c0aa998p-6,0x1.44c087f959307p1,-0x1.426b296143dd4p0
+IEEEremainder,0x1.60a5b367a21p-1,0x1.26fa1c4ae3125p4,0x1.1bf4eeafa601dp1
+IEEEremainder,-0x1.923d2cfb69cf4p-1,-0x1.923d2cfb69cf4p-1,-0x1.9750d975a46c2p2
+IEEEremainder,-0x1.164f2c1d842fcp0,-0x1.164f2c1d842fcp0,0x1.16f9c68a74e4dp1
+IEEEremainder,0x1.68e94f7bcb251p-3,0x1.68e94f7bcb251p-3,0x1.0a8ede9c2f8ccp-1
+IEEEremainder,-0x1.18a29df42db78p-3,0x1.0e898090ee4a5p-1,-0x1.54b2280df9b83p-1
+IEEEremainder,0x1.6fa5356df394p-9,-0x1.d91bc89cac659p-2,-0x1.0ffd2f7204be2p-4
+IEEEremainder,0x1.22f5024349918p-6,0x1.4fad4097e876dp2,-0x1.5954f32f1e1e3p-4
+IEEEremainder,-0x1.4af7a4c3b892p-7,-0x1.256481e2329efp5,0x1.5a06de444e51ep-4
+IEEEremainder,0x1.4b39ddcc0e938p-5,0x1.49b4d70083a66p1,-0x1.72e47f785f56fp-2
+IEEEremainder,0x1.61bd946f1d0c8p-3,0x1.3aa06dbb9394dp1,-0x1.86061b462d056p-1
+IEEEremainder,-0x1.384e7178de044p-1,-0x1.ee295446e3e42p0,0x1.52021b8a74e2p0
+IEEEremainder,0x1.d5cc2f6198654p-6,-0x1.9b664b57eebf3p0,0x1.f048deea0613ep-5
+IEEEremainder,-0x1.08dadc47e3e4fp0,-0x1.08dadc47e3e4fp0,-0x1.354cbca212e52p1
+IEEEremainder,-0x1.916e3613b954p-3,-0x1.341bb9b9bf9ccp2,0x1.2790480921d22p0
+IEEEremainder,0x1.13770164501dp-3,-0x1.83d9670ce8401p1,0x1.440d78e8f1018p-1
+IEEEremainder,-0x1.7e1599abf88d2p-1,-0x1.4383fb2757057p1,0x1.c7fd2978b1c45p0
+IEEEremainder,-0x1.1b01d08de8179p-1,-0x1.1b01d08de8179p-1,-0x1.21d9a4a26db98p1
+IEEEremainder,-0x1.e41655279f92cp-1,0x1.688ea04e5c7acp0,0x1.2d4ce57116221p1
+IEEEremainder,-0x1.6ac9fddf4c2a6p-2,0x1.0c8e40f30dd9fp1,0x1.a28a00e949d45p-1
+IEEEremainder,-0x1.b215df61001dp-6,-0x1.d1baea2634851p-2,-0x1.5ee13cf35069p-4
+IEEEremainder,0x1.5ef9acbc8d206p-3,0x1.5ef9acbc8d206p-3,-0x1.f228f6f21ec12p-1
+IEEEremainder,0x1.1c31d39c6df9ap-3,0x1.1c31d39c6df9ap-3,0x1.c28d77df17f78p-1
+IEEEremainder,0x1.cd1c08e3be29p-4,-0x1.a3f47d0f2b0aap-2,0x1.0b9dbfa40d4a7p-2
+IEEEremainder,-0x1.0e60e475204p-10,0x1.850a519b5bad9p0,-0x1.854de9d478f5ap0
+IEEEremainder,-0x1.1b3d8cf21f434p-2,0x1.1459eb7cc6c09p-1,0x1.a1f8b1f5d6623p-1
+IEEEremainder,0x1.3c8e07e87cd3p-3,0x1.4a657594ff29dp-1,-0x1.f683e735bfea2p-2
+IEEEremainder,0x1.397b539fcea7p-3,0x1.28363fbac5405p0,-0x1.0106d546cb6b7p-1
+IEEEremainder,-0x1.1c55238bd3a5ep-2,0x1.2ff0484ad2a9p1,-0x1.c4a3e65066d25p-1
+IEEEremainder,0x1.703495b8c3537p-4,0x1.703495b8c3537p-4,-0x1.fa9864790c4c8p-3
+IEEEremainder,0x1.7155ccb6adb4p-6,0x1.546c341ff48f8p0,0x1.be33d13c22764p-3
+IEEEremainder,-0x1.c85aaf7aa4dbdp0,-0x1.c85aaf7aa4dbdp0,-0x1.a19a554f8fb0dp2
+IEEEremainder,0x1.59d7f420d6604p-2,-0x1.3c961c035d721p0,0x1.930c190b930a2p-1
+IEEEremainder,-0x1.7d37127616d11p-2,-0x1.7d37127616d11p-2,-0x1.9e0c653b825f5p0
+IEEEremainder,0x1.c105434e9e858p0,-0x1.00c6e4c4ab6a5p4,0x1.7bc9a14cc718ep2
+IEEEremainder,0x1.217e17fbaa198p0,0x1.217e17fbaa198p0,-0x1.c49ecbec7927dp4
+IEEEremainder,-0x1.138fc24a55672p-2,-0x1.05b84b6b50fc8p0,0x1.81a8b5b177457p-1
+IEEEremainder,0x1.9ed238fe1b80ap-6,0x1.9ed238fe1b80ap-6,-0x1.d4fe0e4e2c1ffp3
+IEEEremainder,0x1.4e164c6236a06p-1,-0x1.2a59f20997f46p0,-0x1.d165183ab3449p0
+IEEEremainder,0x1.d8e9b187f42ep-6,0x1.65593a63826f6p1,0x1.d789deab435ebp-4
+IEEEremainder,0x1.141578906beb3p-2,0x1.141578906beb3p-2,-0x1.0aae845ac8ed1p1
+IEEEremainder,0x1.db03194fa9092p-2,0x1.db03194fa9092p-2,0x1.b4ec10edb7605p2
+IEEEremainder,0x1.718f32fdb8cdcp-2,-0x1.56af54047de67p1,-0x1.0340d19823557p0
+IEEEremainder,-0x1.3df2956b19378p-5,0x1.21a18fc05f703p-3,0x1.711e351b25be1p-4
+IEEEremainder,0x1.915f9b24cf9ep-9,-0x1.39f19304c5942p1,0x1.92597e9e27667p-4
+IEEEremainder,-0x1.341222a731e64p-2,-0x1.03c739f1bda5p4,0x1.0ff656d467529p0
+IEEEremainder,0x1.2aa3c6cd7066fp-1,-0x1.d15153e9429f9p-1,0x1.7dfa8d5b59834p0
+IEEEremainder,0x1.9599ad0617bccp-2,-0x1.233788b724cd4p3,0x1.e63a236555ab7p0
+IEEEremainder,0x1.28357c323b3ep-2,-0x1.644e42bd4b7bap1,0x1.8954f24392e36p1
+IEEEremainder,-0x1.ab2ade18b8968p-4,0x1.f18fa04c46186p3,-0x1.c9f6d250e251ep-2
+IEEEremainder,-0x1.09e9c86d9134ap2,-0x1.09e9c86d9134ap2,0x1.6744144abe6p6
+IEEEremainder,-0x1.1da10fbf01c6fp-3,-0x1.1da10fbf01c6fp-3,0x1.13fbd42bacaccp0
+IEEEremainder,0x1.b703466af4f34p-3,-0x1.5ea8dd2e07097p-1,-0x1.cc69aec8c4464p-2
+IEEEremainder,0x1.aaf1453f17caap-2,-0x1.f02e901b9f26bp-1,-0x1.62d3995d9586p0
+IEEEremainder,-0x1.d2cbf13d5e3b4p-5,-0x1.d2cbf13d5e3b4p-5,0x1.70bb139c7f2ap4
+IEEEremainder,-0x1.bf89e288347p-7,-0x1.be1730e6eca82p1,0x1.bc57a7046473bp-2
+IEEEremainder,-0x1.0a6e862d907c4p0,-0x1.0a6e862d907c4p0,0x1.0c0fce2bc8d9ep1
+IEEEremainder,0x1.17f13c338e8f7p-2,0x1.17f13c338e8f7p-2,0x1.4cb7fd951aa3dp-1
+IEEEremainder,0x1.0143242f852b4p-4,0x1.645d7495bfbbdp-2,0x1.240cab89de71p-2
+IEEEremainder,0x1.1f47bbb3ba59p-3,-0x1.421ca57f8ccddp0,-0x1.66059cf60418fp-1
+IEEEremainder,0x1.76bb632d282c8p-2,0x1.dc64de3e6b886p1,-0x1.ad8d71d8c682dp1
+IEEEremainder,0x1.2647c10751ccp-6,-0x1.e3221751eabf1p0,0x1.e7bb365608064p-3
+IEEEremainder,-0x1.60376893d0838p-3,0x1.06eab1e883e1cp5,0x1.bd1fd9cbf203dp-2
+IEEEremainder,0x1.1a53f04d90e4cp-3,-0x1.2ddbaaae6a3fap-2,-0x1.bb05a2d532b2p-2
+IEEEremainder,0x1.548d3c188c51p-2,0x1.acbf9b5e7fe7ap0,0x1.579c4c585cd36p0
+IEEEremainder,-0x1.3839ceab3512p-4,0x1.a17de66dfd29bp1,-0x1.1cd5234239e18p-1
+IEEEremainder,0x1.dfb6af012bebep-1,0x1.dfb6af012bebep-1,0x1.23b777febfe1p3
+IEEEremainder,0x1.77027d1100f14p-1,-0x1.7fe4f5b4b64eep0,0x1.1db31a1e9b63cp1
+IEEEremainder,-0x1.ebb1ba9524da5p-4,-0x1.ebb1ba9524da5p-4,-0x1.8519f63a6904fp-1
+IEEEremainder,-0x1.708245d14a8b9p-1,-0x1.708245d14a8b9p-1,0x1.e8ec7cb7029b7p1
+IEEEremainder,-0x1.b532570494bdp-4,0x1.93d754a1d81d4p0,-0x1.af2a7a1221691p-2
+IEEEremainder,-0x1.270f63114a4e4p0,0x1.bc5a725b4cc0cp0,-0x1.71b4eab64b878p1
+IEEEremainder,-0x1.3813e4e6125c4p-2,-0x1.3813e4e6125c4p-2,0x1.6934bcf3ca13bp0
+IEEEremainder,0x1.3372b6c66f77ap-2,-0x1.bf1925b89cc6p0,-0x1.5d4e8cf17b17fp-1
+IEEEremainder,0x1.1414a3adb4c8p-1,0x1.1414a3adb4c8p-1,0x1.bcd487b099ff8p0
+IEEEremainder,-0x1.354e616b029b5p0,-0x1.354e616b029b5p0,0x1.2987b0d2c1c6ap4
+IEEEremainder,-0x1.07bd37471195dp-5,-0x1.07bd37471195dp-5,-0x1.3c87767dbe507p1
+IEEEremainder,-0x1.e3718da73d2cp-6,-0x1.9bf3f2267ec33p0,0x1.94662befe1ce8p-1
+IEEEremainder,0x1.4c2195d13e1ep-6,-0x1.44b69a320cb66p0,0x1.b7ded60c6ce92p-2
+IEEEremainder,0x1.038c62b1406b2p-6,-0x1.235df5ff05e7ap1,0x1.fb7e5ebb842a5p-5
+IEEEremainder,-0x1.939ff0dd73098p-2,0x1.6e869ba2dc439p2,0x1.bfb78c37a884cp-1
+IEEEremainder,-0x1.0186124b4bafp-2,0x1.fe393974641eep-2,0x1.7fdfa5dfd7e6fp-1
+IEEEremainder,0x1.1b9967dea8df8p-4,-0x1.82953f59dd2c5p-1,-0x1.a6086c55b2484p-1
+IEEEremainder,-0x1.3a3022dfc5a6ap0,-0x1.3a3022dfc5a6ap0,-0x1.67d0bdb25fc11p1
+IEEEremainder,0x1.131e46b7df6p-6,-0x1.9ba50827a27edp-1,0x1.a43dfa5d6179dp-2
+IEEEremainder,0x1.5e518f746e9ccp-2,0x1.85868ab677113p0,-0x1.2df226d95b6ap0
+IEEEremainder,-0x1.51e44e4fc4adep-2,-0x1.51e44e4fc4adep-2,0x1.8aa9327c3acacp-1
+IEEEremainder,0x1.822409e9132dp-3,-0x1.e4afee99b8ef4p-1,0x1.229c7889fedd4p0
+IEEEremainder,0x1.909d89e1f7307p-1,0x1.909d89e1f7307p-1,-0x1.75fc9f092b3a8p3
+IEEEremainder,0x1.44cda9dc59618p-1,0x1.44cda9dc59618p-1,0x1.2ba91f120e2dcp3
+IEEEremainder,0x1.1fc0ff61f7441p-1,-0x1.285e3caffdc53p-1,0x1.240f9e08fa84ap0
+IEEEremainder,-0x1.a1c7aba6daab9p-1,-0x1.a1c7aba6daab9p-1,-0x1.bc452fec006aep1
+IEEEremainder,-0x1.4035da047fb8p-4,-0x1.b4d8ac411492dp1,-0x1.aad6fd70f0951p-2
+IEEEremainder,0x1.b18fdae37de4p-8,0x1.8542f580f9183p-1,-0x1.762e62b585edp-6
+IEEEremainder,-0x1.1ed76b98f035cp-2,0x1.50a2ec449b72fp0,0x1.9858c72ad7806p-1
+IEEEremainder,0x1.27f544e1eb74dp1,-0x1.ae8037eb76c01p1,0x1.6b3abe66b11a7p2
+IEEEremainder,0x1.556c2751e3bfp-4,0x1.cfac7c5e66f14p0,0x1.ba55b9e948b55p-1
+IEEEremainder,0x1.939b8787f8a0cp-1,-0x1.a8442e2d22de2p-1,0x1.9defdada8dbf7p0
+IEEEremainder,0x1.2c877e8dcd8ep-4,-0x1.9bc975650ef5bp-1,-0x1.c15a6536c8a77p-2
+IEEEremainder,-0x1.2251737ff9d98p-3,-0x1.65b6be6482d5ep5,0x1.d1bca3305753ap-1
+IEEEremainder,0x1.ddb56687b4393p-5,0x1.ddb56687b4393p-5,0x1.72298db54d895p-3
+IEEEremainder,0x1.8ae6bfe8a9fdp-3,-0x1.417eacb67439ep0,-0x1.72db84b389798p-1
+IEEEremainder,0x1.e5e97b41c94bp-2,-0x1.8599a94908bd3p0,0x1.ff1408197b0ffp0
+IEEEremainder,0x1.bc8222d2d3c4p-5,0x1.6b90c5493d89cp0,0x1.5dacb432a6ebap0
+IEEEremainder,0x1.3cbcc2fea741p-4,-0x1.908c2172b4a34p-1,-0x1.b823b9d2898b6p-1
+IEEEremainder,0x1.069d3d55bdfa6p0,-0x1.a3b4f3d523d38p2,0x1.4392d771b78c1p1
+IEEEremainder,0x1.a717c4f38c853p-5,0x1.a717c4f38c853p-5,-0x1.a9c0eaf5d230ap0
+IEEEremainder,0x1.64d7ff718bba8p-1,0x1.64d7ff718bba8p-1,0x1.27a98dd41fd91p3
+IEEEremainder,-0x1.202706163244cp-1,-0x1.3d777b18721p5,-0x1.72ebb2f6a2b2ep0
+IEEEremainder,0x1.2967f1e7aeef8p-2,0x1.9af9a33b2fdccp0,0x1.509fa6c14420ep0
+IEEEremainder,-0x1.edef5630a84aep-1,-0x1.edef5630a84aep-1,0x1.2e01cbe060fbbp6
+IEEEremainder,-0x1.466c1a8b2e87p-5,0x1.38ce3ba3159f1p-1,0x1.4d34fd4bc8878p-2
+IEEEremainder,-0x1.1b5a021ae8447p-3,-0x1.1b5a021ae8447p-3,0x1.2deee2768e629p8
+IEEEremainder,-0x1.835165b6d5381p2,-0x1.835165b6d5381p2,0x1.72b2d8bc2092dp4
+IEEEremainder,0x1.8e6ba7288b34p-3,0x1.2661ac17c7835p1,0x1.0d7af1a53ed01p0
+IEEEremainder,-0x1.89f86f3ed2696p-1,0x1.3eade66d10b55p0,0x1.01d50f063cf5p1
+IEEEremainder,-0x1.13813e6f99302p-2,0x1.7e26c6bb96e0fp0,-0x1.2caf643a53735p-1
+IEEEremainder,-0x1.4e5482593a22p-1,0x1.0ecbcfc05249dp0,-0x1.b5f610ecef5adp0
+IEEEremainder,-0x1.8a4fb71feaebep-4,0x1.0b594e5f6c4dcp2,-0x1.a0c6ef9843023p-3
+IEEEremainder,-0x1.d39e274325d28p-2,0x1.47a1933a4a8a6p3,-0x1.c8535b45da4bfp0
+IEEEremainder,-0x1.83130de2f670ap-4,-0x1.83130de2f670ap-4,0x1.3c89aa3c489edp-2
+IEEEremainder,-0x1.c89c4903975d8p-3,0x1.a86a46eb2d8acp0,0x1.40fe8ab26af9ap-1
+IEEEremainder,0x1.4ac369a655b8ap-1,0x1.4ac369a655b8ap-1,-0x1.6d6526e38cecp0
+IEEEremainder,0x1.5227707fdb7ap-2,0x1.6a725355f68c1p2,0x1.554fdc4df8d47p-1
+IEEEremainder,0x1.3fd82958212dp-4,-0x1.541fb6d735eaep0,-0x1.681d396cb7fdbp-2
+IEEEremainder,-0x1.f4326fce678dfp-2,-0x1.f4326fce678dfp-2,-0x1.6f861c35a4158p0
+IEEEremainder,-0x1.89edf6bf8f46p-4,0x1.3f80a8f4e298dp5,-0x1.559f9988cf55dp-2
+IEEEremainder,-0x1.4800ae86e9d7dp0,-0x1.4800ae86e9d7dp0,0x1.ef985af4ec19dp2
+max,0x1.715eda6ab8562p2,-0x1.123d877d62ecbp2,0x1.715eda6ab8562p2
+max,0x1.6bf99eae2daf1p-1,0x1.04a084b48941ap-5,0x1.6bf99eae2daf1p-1
+max,0x1.71d3162e989e1p-2,-0x1.217c07c022339p1,0x1.71d3162e989e1p-2
+max,0x1.037880e10da75p0,0x1.5ca0113354b34p-2,0x1.037880e10da75p0
+max,-0x1.16982379a6ff7p-6,-0x1.4b06ec133eb96p-1,-0x1.16982379a6ff7p-6
+max,0x1.ec44f0f2f90acp-1,-0x1.34ea1e1f5a4e9p0,0x1.ec44f0f2f90acp-1
+max,0x1.9f4c3f68431f6p0,-0x1.01a6366c18264p1,0x1.9f4c3f68431f6p0
+max,0x1.30c55ff162bb6p4,0x1.30c55ff162bb6p4,0x1.3a5a028db64d5p2
+max,0x1.bf9b42ac4f87fp-1,-0x1.8a3e408bc21dbp1,0x1.bf9b42ac4f87fp-1
+max,0x1.f6c2140945b18p0,0x1.f6c2140945b18p0,0x1.bd6a19029eb1fp0
+max,0x1.361fe90d27d6cp0,-0x1.eb5bd9156282dp1,0x1.361fe90d27d6cp0
+max,-0x1.3a7b369b89b3fp-3,-0x1.c1423acc0c629p-3,-0x1.3a7b369b89b3fp-3
+max,0x1.d27991c908bf4p0,0x1.c36246cf7bc62p-2,0x1.d27991c908bf4p0
+max,-0x1.2fa756615e776p-1,-0x1.2ec76e5f00cb2p1,-0x1.2fa756615e776p-1
+max,-0x1.584cbd3d68345p-2,-0x1.584cbd3d68345p-2,-0x1.0da698ff2189fp0
+max,0x1.0c1cb0a904868p0,0x1.86872e85fffa9p-1,0x1.0c1cb0a904868p0
+max,0x1.0670c61480ba2p-1,-0x1.3bc0af2977443p-1,0x1.0670c61480ba2p-1
+max,0x1.2df485b8c1266p0,-0x1.a256078c47936p-1,0x1.2df485b8c1266p0
+max,-0x1.f38f820ff6615p-2,-0x1.01a1f7668b30ep1,-0x1.f38f820ff6615p-2
+max,-0x1.607caf8f08634p-3,-0x1.607caf8f08634p-3,-0x1.bd9ff189e6452p-1
+max,-0x1.b3584f460ebp-1,-0x1.d0e68946f28eep1,-0x1.b3584f460ebp-1
+max,-0x1.f97bf5141db1cp-3,-0x1.f97bf5141db1cp-3,-0x1.6db0a4b285f5cp3
+max,0x1.8ee8bddeb6d5ap-1,-0x1.93a1a1f3bd04ep0,0x1.8ee8bddeb6d5ap-1
+max,0x1.2728b6cd3c3d6p1,0x1.2728b6cd3c3d6p1,0x1.136773166616cp-2
+max,-0x1.eabb7b627b94p-3,-0x1.83bc983ee0ee9p-1,-0x1.eabb7b627b94p-3
+max,-0x1.38bea79bd28ffp-1,-0x1.38bea79bd28ffp-1,-0x1.0de83a1879db6p0
+max,-0x1.951d35a1da33dp-2,-0x1.951d35a1da33dp-2,-0x1.4abcb196e114ap-1
+max,0x1.0c6b8df400fe2p3,0x1.e47b3f44f389ap0,0x1.0c6b8df400fe2p3
+max,-0x1.83e508272f9c9p-1,-0x1.c1fa7b1d558a9p2,-0x1.83e508272f9c9p-1
+max,-0x1.b8135fe636e83p-1,-0x1.b8135fe636e83p-1,-0x1.0f39893694473p0
+max,0x1.24d75898c990bp-2,0x1.24d75898c990bp-2,-0x1.7004d30c2bf16p-1
+max,-0x1.ebbe591280802p0,-0x1.ebbe591280802p0,-0x1.8f7b657584d81p1
+max,-0x1.5e836be36ab5ap-3,-0x1.5e836be36ab5ap-3,-0x1.2e83e0ec4b20cp0
+max,0x1.84e6de8132685p-1,0x1.84e6de8132685p-1,-0x1.79f0d4fcacc49p-1
+max,0x1.818ace8d1e8adp0,0x1.c32c0459a4543p-1,0x1.818ace8d1e8adp0
+max,0x1.5ce7f477b5eebp-1,0x1.ec114bb26ae73p-2,0x1.5ce7f477b5eebp-1
+max,-0x1.069211abc123dp0,-0x1.9a15177bbfc47p0,-0x1.069211abc123dp0
+max,0x1.4ad52107f7727p-1,0x1.2bb4b116c81dep-1,0x1.4ad52107f7727p-1
+max,0x1.4cc769cfe9596p0,0x1.4cc769cfe9596p0,-0x1.169630d7de745p0
+max,0x1.7345b49b70be8p0,0x1.7345b49b70be8p0,0x1.0517fde42ca7dp0
+max,0x1.c4f4c38294774p0,0x1.4acb03f65488ap-5,0x1.c4f4c38294774p0
+max,0x1.4d16731fd3b9bp1,-0x1.e69f72e796907p-2,0x1.4d16731fd3b9bp1
+max,-0x1.454ece2014dc9p-1,-0x1.d552258c9a76ep-1,-0x1.454ece2014dc9p-1
+max,0x1.6fd73ebf324fp-2,-0x1.abb9930e9d057p-5,0x1.6fd73ebf324fp-2
+max,0x1.48a204ec37209p0,0x1.48a204ec37209p0,0x1.7d7fd6725396bp-1
+max,0x1.481e1a898f8d4p0,0x1.481e1a898f8d4p0,0x1.9cd901c3a1706p-1
+max,0x1.25cda40ee14ccp-3,-0x1.5c4cfc7b02eaep1,0x1.25cda40ee14ccp-3
+max,0x1.066d62f2bb4c1p0,0x1.066d62f2bb4c1p0,-0x1.a16b49a62fcfep-2
+max,0x1.301bff1794761p1,0x1.301bff1794761p1,-0x1.4815e57b7ec39p1
+max,-0x1.50844bd0c2fe1p0,-0x1.50844bd0c2fe1p0,-0x1.0f44240c9a3eap4
+max,0x1.f775724f9ed8dp0,0x1.f9f83c6009199p-3,0x1.f775724f9ed8dp0
+max,0x1.cfe7908fa475cp3,-0x1.4e5b60ae25edcp1,0x1.cfe7908fa475cp3
+max,0x1.2fbd00c704c43p-1,0x1.14b855d469e2bp-1,0x1.2fbd00c704c43p-1
+max,0x1.23466b685575bp2,0x1.a846a5c2b602cp-1,0x1.23466b685575bp2
+max,-0x1.0e0421fe943dbp1,-0x1.444d05ceb82d9p2,-0x1.0e0421fe943dbp1
+max,-0x1.d7bf6d0f640e6p-3,-0x1.d7bf6d0f640e6p-3,-0x1.93d6d88b65475p-2
+max,0x1.2c2a52842bcaep0,0x1.2c2a52842bcaep0,-0x1.3a47ff2c86de4p0
+max,0x1.937cf65a16ef7p4,0x1.a92448b787444p2,0x1.937cf65a16ef7p4
+max,0x1.708da1a5f1218p8,0x1.708da1a5f1218p8,0x1.34fafae05fb8ap-1
+max,0x1.a25f647876149p0,0x1.a25f647876149p0,0x1.6be965de57989p-4
+max,0x1.969fa2309498fp0,0x1.7b1f02d845448p-1,0x1.969fa2309498fp0
+max,0x1.4074059f5f18fp-3,0x1.4074059f5f18fp-3,-0x1.e3237282cb7ecp0
+max,0x1.9c01ebf07555fp1,0x1.fbd34ac0f39b7p-1,0x1.9c01ebf07555fp1
+max,0x1.90c7632923b73p-2,0x1.90c7632923b73p-2,-0x1.8152574bb0256p-1
+max,-0x1.841b121c3df5ap0,-0x1.841b121c3df5ap0,-0x1.5a0bc05bda8bp1
+max,-0x1.6cb075dcc54b8p-3,-0x1.a5dd9922cb9c1p0,-0x1.6cb075dcc54b8p-3
+max,0x1.a2494106a27f9p-1,0x1.a2494106a27f9p-1,-0x1.2b605d792e652p-1
+max,0x1.b13301e8f9cc5p1,0x1.b13301e8f9cc5p1,-0x1.3f3e72b6d33b4p0
+max,0x1.0bdc0c6797ebcp0,0x1.0bdc0c6797ebcp0,-0x1.08b82c1e635efp0
+max,0x1.245c222ba2cc1p0,0x1.644982935e712p-1,0x1.245c222ba2cc1p0
+max,0x1.52fb4ada5ee08p0,-0x1.05d3d956fa82ap4,0x1.52fb4ada5ee08p0
+max,-0x1.488ad710699ebp0,-0x1.488ad710699ebp0,-0x1.033b00e6a52e4p2
+max,0x1.e0d08b88b0fefp-1,0x1.e0d08b88b0fefp-1,-0x1.d324ede2c9a2dp-1
+max,0x1.c1f03b5c16e5fp-1,-0x1.02593399b1ba9p1,0x1.c1f03b5c16e5fp-1
+max,-0x1.b27fab5b5f889p-6,-0x1.b27fab5b5f889p-6,-0x1.4e834b39a50adp-2
+max,-0x1.22f533bcce775p-1,-0x1.22f533bcce775p-1,-0x1.6d68dc73dde4ap3
+max,0x1.da40eff1835b9p-3,0x1.da40eff1835b9p-3,-0x1.1eae7dfffe30bp2
+max,0x1.0e8be2988575dp-2,-0x1.59b27bbd180fap-2,0x1.0e8be2988575dp-2
+max,-0x1.0976afc0a9856p-3,-0x1.32a346caf9a8ep5,-0x1.0976afc0a9856p-3
+max,0x1.f24f3a1dca83p1,-0x1.1131e584a301ep-9,0x1.f24f3a1dca83p1
+max,0x1.9de4a5bce44bp-3,0x1.9de4a5bce44bp-3,-0x1.91cbaecf6868ep-2
+max,0x1.4c8c2b604cc7ap-1,0x1.4c8c2b604cc7ap-1,-0x1.25d9225df065bp-2
+max,0x1.f3993ce1d34d7p-4,-0x1.828ccd9d93983p2,0x1.f3993ce1d34d7p-4
+max,0x1.811a9846af52p-1,0x1.811a9846af52p-1,0x1.2a940e0025e4bp-3
+max,0x1.03276c4c1edf8p2,0x1.03276c4c1edf8p2,0x1.00fab79405848p-4
+max,-0x1.4223e3c3fcc54p-2,-0x1.4223e3c3fcc54p-2,-0x1.b34bd3516cf55p-2
+max,0x1.a7dc019ee8b93p-1,0x1.0c101e188a668p-3,0x1.a7dc019ee8b93p-1
+max,0x1.6b73c740b2a91p1,0x1.6b73c740b2a91p1,-0x1.5c10a67c1a282p-3
+max,-0x1.c0c1f9d834eeap-1,-0x1.c0c1f9d834eeap-1,-0x1.ec07432e06953p-1
+max,-0x1.eebed0cb2df88p-1,-0x1.eebed0cb2df88p-1,-0x1.1184b287779a4p0
+max,0x1.b7efe44adf4c4p0,-0x1.5a74dc1b5f887p0,0x1.b7efe44adf4c4p0
+max,0x1.323224efdc45ep-2,-0x1.8603e2a67a9ebp-2,0x1.323224efdc45ep-2
+max,0x1.49adbf589f7cdp-2,0x1.49adbf589f7cdp-2,-0x1.7e1ede8b0dcf1p0
+max,0x1.feadf76e213c5p-2,-0x1.38424eaa9f7d7p-1,0x1.feadf76e213c5p-2
+max,0x1.169084b55ce96p0,0x1.169084b55ce96p0,0x1.00dd40de863e5p0
+max,-0x1.3bd29ad82ab5fp-1,-0x1.ddb7032b6ec4ep3,-0x1.3bd29ad82ab5fp-1
+max,0x1.a4b7216b2e697p-1,0x1.0e69e57c45876p-1,0x1.a4b7216b2e697p-1
+max,0x1.42b704013ef84p0,-0x1.9871fcfe384eep-1,0x1.42b704013ef84p0
+max,0x1.375f4517cc0f8p-2,0x1.375f4517cc0f8p-2,-0x1.104d97045573fp0
+max,0x1.dcae4475307ccp-1,0x1.6d0a9164169e2p-3,0x1.dcae4475307ccp-1
+max,-0x1.f19b81b13d60fp-1,-0x1.f19b81b13d60fp-1,-0x1.12d9ae07eb3e6p0
+max,0x1.9b5c6c0054a45p0,-0x1.8b39de59fe01ap2,0x1.9b5c6c0054a45p0
+max,0x1.a14d6b9b7b3e6p-5,0x1.a14d6b9b7b3e6p-5,0x1.033cd886eed37p-5
+max,-0x1.c16334a678feap-1,-0x1.c16334a678feap-1,-0x1.21eb26cd790ddp0
+max,-0x1.77317877b98eap0,-0x1.1230ac4fdeaefp1,-0x1.77317877b98eap0
+max,0x1.53daa2336cc14p6,0x1.ae5c124ff767dp-1,0x1.53daa2336cc14p6
+max,0x1.508ec20cff9c8p3,0x1.508ec20cff9c8p3,-0x1.ca02307be68b8p1
+max,0x1.2f38cee16d234p1,-0x1.154fba07bd232p0,0x1.2f38cee16d234p1
+max,0x1.91d1d90fe15e1p0,-0x1.836bbbddcf13bp0,0x1.91d1d90fe15e1p0
+max,-0x1.fa036659caf6bp-1,-0x1.fa036659caf6bp-1,-0x1.9bc1460fe4d16p0
+max,0x1.3174b9a6a4a0cp0,0x1.3174b9a6a4a0cp0,-0x1.b5665b6332761p-1
+max,-0x1.11fa1ba53bea8p-4,-0x1.11fa1ba53bea8p-4,-0x1.b409525077441p-2
+max,0x1.36487ea0ca3f4p-1,-0x1.6d228f1905fap-1,0x1.36487ea0ca3f4p-1
+max,0x1.394210da3385ap1,0x1.6784e31973bbfp-1,0x1.394210da3385ap1
+max,0x1.d493b91366591p1,0x1.d493b91366591p1,0x1.1854337bb9aa5p-1
+max,0x1.a16d26d4804fep1,0x1.46098dafdf442p-4,0x1.a16d26d4804fep1
+max,0x1.ad5bebfca748fp2,-0x1.08911ef2e9a3dp0,0x1.ad5bebfca748fp2
+max,0x1.d937b7c5283edp-3,0x1.3ae867da6c443p-3,0x1.d937b7c5283edp-3
+max,0x1.3d711a6e2853fp0,0x1.3d711a6e2853fp0,-0x1.4e308f2d90dap-2
+max,0x1.35c41375b8715p1,0x1.02661c271b354p1,0x1.35c41375b8715p1
+max,-0x1.181f3885ccaabp-5,-0x1.847a53004ca9fp-1,-0x1.181f3885ccaabp-5
+max,0x1.bce610feea79cp3,0x1.b68d06485e079p0,0x1.bce610feea79cp3
+max,0x1.05a4b8c49b9c6p2,0x1.05a4b8c49b9c6p2,0x1.23e045b36cf71p-1
+max,0x1.23c70a9355ee2p6,-0x1.be2c987cc3f46p-2,0x1.23c70a9355ee2p6
+max,0x1.6aa2ccce0ee2p-1,0x1.1c6b6c3be7217p-1,0x1.6aa2ccce0ee2p-1
+max,0x1.47b5a27f88cd4p0,-0x1.ba7f7c40d48bap-1,0x1.47b5a27f88cd4p0
+max,0x1.1ffc51da30594p4,0x1.1ffc51da30594p4,-0x1.a99227ca9ec4dp-4
+max,0x1.f350685643306p4,0x1.f350685643306p4,-0x1.1ce3ee03d9515p2
+max,0x1.164ba7603719p-2,0x1.439bd3af0c60cp-5,0x1.164ba7603719p-2
+max,-0x1.0c5c4e2fa7943p-1,-0x1.0c5c4e2fa7943p-1,-0x1.685ba9ed1cd17p1
+max,-0x1.60bf854ce3c4dp-5,-0x1.2ef2aa9007428p0,-0x1.60bf854ce3c4dp-5
+max,0x1.cee376c29a96p-1,0x1.cee376c29a96p-1,-0x1.9654482c44979p-1
+max,-0x1.1caeeb891affdp1,-0x1.cb3ebdd8be3f5p1,-0x1.1caeeb891affdp1
+max,0x1.174344e5e0291p3,0x1.174344e5e0291p3,0x1.a6f7bfffd3397p-1
+max,-0x1.325ede26966aep-2,-0x1.9e6840eb53a02p0,-0x1.325ede26966aep-2
+max,0x1.e87e0753cc668p0,0x1.4dcd0a4107d63p-2,0x1.e87e0753cc668p0
+max,0x1.f450bb8dc737p-3,-0x1.884d05667a039p-2,0x1.f450bb8dc737p-3
+max,0x1.79db0a88a6178p-5,-0x1.b779584a48313p-2,0x1.79db0a88a6178p-5
+max,0x1.627d2bd7d0c3p-1,0x1.627d2bd7d0c3p-1,-0x1.5d3cc03d1c5dp-2
+max,-0x1.6e681a570701dp-1,-0x1.321834c90d23ep0,-0x1.6e681a570701dp-1
+max,-0x1.03f4bfa45cb81p1,-0x1.68648b4580fccp4,-0x1.03f4bfa45cb81p1
+max,-0x1.a5a2883f67b46p-4,-0x1.617687be3ec66p-2,-0x1.a5a2883f67b46p-4
+max,0x1.23efdf13fb84ap0,0x1.ab50f49f951aep-1,0x1.23efdf13fb84ap0
+max,0x1.b78f97655b26fp-1,0x1.b78f97655b26fp-1,0x1.1c7a04b4e9c28p-1
+max,0x1.4a3e497c49471p0,0x1.6548680dd16d5p-2,0x1.4a3e497c49471p0
+max,-0x1.dd070798cfdb3p0,-0x1.dd070798cfdb3p0,-0x1.03ee413663952p5
+max,0x1.300b8893f13f6p0,-0x1.0330898a2cc48p1,0x1.300b8893f13f6p0
+max,0x1.0ab1704aee3d6p0,0x1.b4bd912f7d76ep-5,0x1.0ab1704aee3d6p0
+max,-0x1.1b8dc0def141ap-1,-0x1.745059407937cp1,-0x1.1b8dc0def141ap-1
+max,0x1.87de0f34c2334p-2,0x1.87de0f34c2334p-2,-0x1.14bbf7bcc0a22p1
+max,0x1.5cfe604aa0362p-4,0x1.5cfe604aa0362p-4,-0x1.19824c8deb282p0
+max,0x1.817696d8ca183p-3,-0x1.3eb71189b4143p-1,0x1.817696d8ca183p-3
+max,0x1.66f42e69b47d7p-1,0x1.66f42e69b47d7p-1,-0x1.d449b1f44e633p0
+max,0x1.b92e7b3d72f42p1,0x1.0e56c2680ae1ap-2,0x1.b92e7b3d72f42p1
+max,0x1.7884f26864993p-1,-0x1.07ce3589c58f3p0,0x1.7884f26864993p-1
+max,-0x1.a8e4d58a575e4p-2,-0x1.a8e4d58a575e4p-2,-0x1.52b57140d661cp-1
+max,0x1.074337293b9dap1,0x1.074337293b9dap1,0x1.0d1f59d7b33d2p0
+max,0x1.b030a230348f5p-1,0x1.b030a230348f5p-1,-0x1.1ea0d9f821ddcp1
+max,-0x1.086488fa12f92p0,-0x1.b9fb23d610031p0,-0x1.086488fa12f92p0
+max,-0x1.5f4dd1578a099p-3,-0x1.5f4dd1578a099p-3,-0x1.a7081c64b4c25p-2
+max,-0x1.1fc6aa5158e82p-2,-0x1.1fc6aa5158e82p-2,-0x1.5392d0c9f5f0ep0
+max,0x1.44d25fe19310bp-1,0x1.44d25fe19310bp-1,0x1.6937b399c0539p-4
+max,0x1.417bad30a66f2p-1,-0x1.eb6772df6580ap0,0x1.417bad30a66f2p-1
+max,0x1.abb329087d29p-3,0x1.abb329087d29p-3,0x1.395b340a208b1p-3
+max,0x1.5374167cdb884p1,0x1.5374167cdb884p1,-0x1.b02196e1ff943p3
+max,0x1.56d6c27e9a1fp0,0x1.e505c8e2c4f68p-2,0x1.56d6c27e9a1fp0
+max,0x1.0c078dba2e9b6p4,0x1.0c078dba2e9b6p4,-0x1.6231dba32a3c8p-2
+max,-0x1.9b4d30df0f9e9p0,-0x1.34e1cb729841dp2,-0x1.9b4d30df0f9e9p0
+max,0x1.21ff139342d29p0,-0x1.56d9f8f4d560ep2,0x1.21ff139342d29p0
+max,-0x1.09729d33fdad6p0,-0x1.a1ac1648c825p1,-0x1.09729d33fdad6p0
+max,0x1.6e1aeba8be2e1p2,-0x1.07f074add9e8cp1,0x1.6e1aeba8be2e1p2
+max,0x1.a474ba1acb868p-1,0x1.a474ba1acb868p-1,-0x1.07813c5159cb8p0
+max,0x1.46456ec6f64b7p-4,0x1.46456ec6f64b7p-4,-0x1.f81c22ba6fd27p3
+max,-0x1.a90402ec8c761p-1,-0x1.a90402ec8c761p-1,-0x1.30989e3693c89p3
+max,0x1.19ebb41478199p0,0x1.19ebb41478199p0,0x1.168cc73044492p0
+max,0x1.f89e84c96dc67p0,0x1.f89e84c96dc67p0,0x1.1728a3644e497p-2
+max,0x1.cce3b436bec31p1,0x1.cce3b436bec31p1,-0x1.b6ea28bd83144p-1
+max,0x1.09c94ad4a514fp-1,0x1.09c94ad4a514fp-1,-0x1.b6a6a20dd7c58p-2
+max,0x1.04f2c8d7f6f81p-3,0x1.04f2c8d7f6f81p-3,-0x1.1dca4777e34edp0
+max,0x1.0e51e5bae1b4fp3,-0x1.eedd537f6ff89p-2,0x1.0e51e5bae1b4fp3
+max,-0x1.01be92a228736p0,-0x1.1b163fbe40b0ap0,-0x1.01be92a228736p0
+max,0x1.3209d6c43fef1p0,0x1.3209d6c43fef1p0,-0x1.3b26a1e0fb67dp0
+max,-0x1.ca4fd4ce38496p0,-0x1.82f541d1d82ap6,-0x1.ca4fd4ce38496p0
+max,0x1.21463a760ffe5p-2,-0x1.ea66ae1526363p-1,0x1.21463a760ffe5p-2
+max,0x1.5abae34817b0dp-1,0x1.5abae34817b0dp-1,0x1.ad6480acff31bp-4
+max,0x1.197568e5da05p0,0x1.6be9f832a5009p-1,0x1.197568e5da05p0
+max,-0x1.31cdc26bee4dap-2,-0x1.31cdc26bee4dap-2,-0x1.c97651d6a2bb1p-2
+max,0x1.de296ad50534fp-3,-0x1.d7d84b8df6dc8p2,0x1.de296ad50534fp-3
+max,0x1.a138e38ed9c27p-1,0x1.a138e38ed9c27p-1,-0x1.a461a761a5258p-5
+max,0x1.33fa6b58ddf8ep2,0x1.33fa6b58ddf8ep2,-0x1.4bd861119b025p0
+max,-0x1.0bcc00461b547p1,-0x1.50643ab09ebecp1,-0x1.0bcc00461b547p1
+max,0x1.a5405570b9037p1,-0x1.2c220c5318d9bp0,0x1.a5405570b9037p1
+max,0x1.0ab97b7b68f01p1,0x1.0ab97b7b68f01p1,-0x1.50348eb28878bp0
+max,0x1.eebcd506d7814p0,0x1.eebcd506d7814p0,-0x1.e3279f6a1fdc4p-2
+max,0x1.cbc718a2e8753p0,0x1.0b2651a6c4e51p0,0x1.cbc718a2e8753p0
+max,0x1.af34db6a803bp-2,0x1.af34db6a803bp-2,-0x1.364e5e5cce93p0
+max,0x1.d07715682f3e9p-2,0x1.be703a2ad1a97p-2,0x1.d07715682f3e9p-2
+max,-0x1.0f68a842c56edp4,-0x1.0f68a842c56edp4,-0x1.1f458b97e53d4p14
+max,-0x1.bb28456fa0b39p-1,-0x1.150b185442475p2,-0x1.bb28456fa0b39p-1
+max,0x1.ddb257fcd3ef2p-4,-0x1.e468c0dddb3a4p0,0x1.ddb257fcd3ef2p-4
+min,-0x1.13a94916c6632p1,0x1.ac23ebf48ab15p-1,-0x1.13a94916c6632p1
+min,0x1.2d7766f5c9b61p0,0x1.2d7766f5c9b61p0,0x1.59be058e00538p0
+min,0x1.fe34c9c10228dp-2,0x1.0c09f682d7678p3,0x1.fe34c9c10228dp-2
+min,-0x1.ce89c50cf4192p-1,0x1.3491274e10f1ep-1,-0x1.ce89c50cf4192p-1
+min,-0x1.4981407ee7abep3,-0x1.32fa1d18254cbp2,-0x1.4981407ee7abep3
+min,-0x1.3e13233971719p0,-0x1.3e13233971719p0,0x1.4239cce7fed1ap0
+min,-0x1.b93ae6945c66cp-2,-0x1.b93ae6945c66cp-2,0x1.4e41c5625209ap2
+min,-0x1.bae87769f9bc5p-4,0x1.1cfccaf510c3dp1,-0x1.bae87769f9bc5p-4
+min,-0x1.4513fe72d84fcp-1,-0x1.2204a6b91c706p-2,-0x1.4513fe72d84fcp-1
+min,-0x1.7d39541b56792p-1,-0x1.7d39541b56792p-1,0x1.9e00ae836a6d8p-4
+min,0x1.fcec31bd378f2p-4,0x1.cbcbe0818db38p-1,0x1.fcec31bd378f2p-4
+min,-0x1.074fee289c7a2p-1,-0x1.074fee289c7a2p-1,-0x1.3709c74314ba2p-2
+min,0x1.509aa2555639dp-2,0x1.7ac8e766b2394p-1,0x1.509aa2555639dp-2
+min,-0x1.b04a57efa1058p4,-0x1.b04a57efa1058p4,-0x1.8a85df2ddf534p-3
+min,-0x1.ca5a826213c65p0,-0x1.adfd7e008374ap0,-0x1.ca5a826213c65p0
+min,-0x1.3d06c467df783p0,0x1.b3362c98633e6p-3,-0x1.3d06c467df783p0
+min,-0x1.9cc47a7ba3095p-3,0x1.9d58995951072p2,-0x1.9cc47a7ba3095p-3
+min,0x1.86c86459dcf24p-1,0x1.86c86459dcf24p-1,0x1.b629984e3e5cep1
+min,0x1.61b79fa5440edp-1,0x1.f0b0816f2d328p1,0x1.61b79fa5440edp-1
+min,-0x1.de5e4512ed9afp-2,-0x1.de5e4512ed9afp-2,-0x1.594a6949300bfp-3
+min,-0x1.50b9c30194096p0,0x1.16d29d92eda58p1,-0x1.50b9c30194096p0
+min,0x1.dbdd3fd40e2c8p-1,0x1.dbdd3fd40e2c8p-1,0x1.03caf44b9ff2bp3
+min,0x1.6bfe7dedc912p2,0x1.6bfe7dedc912p2,0x1.c0c15315feae2p11
+min,-0x1.42f6f8eb41752p1,-0x1.82a5d68d432f7p-1,-0x1.42f6f8eb41752p1
+min,-0x1.3af239c2fc405p1,0x1.e184a195ab379p-2,-0x1.3af239c2fc405p1
+min,-0x1.26818ff4a5f7cp0,-0x1.095d94f089fcep0,-0x1.26818ff4a5f7cp0
+min,-0x1.bb0050d3325f6p-2,-0x1.521fc1c60961ep-3,-0x1.bb0050d3325f6p-2
+min,-0x1.2b9268bb58f28p-1,0x1.d90661b86086dp-3,-0x1.2b9268bb58f28p-1
+min,-0x1.24ee803b1efa2p1,0x1.71b5596e0ed89p-1,-0x1.24ee803b1efa2p1
+min,-0x1.b2249746077e9p-1,-0x1.b2249746077e9p-1,0x1.0946a46409006p-3
+min,0x1.0b91b04e6c8e2p0,0x1.0b91b04e6c8e2p0,0x1.27c18403a04f5p0
+min,0x1.27e9a5f752112p-2,0x1.52fc515f8014p-2,0x1.27e9a5f752112p-2
+min,0x1.d500a898f7f24p-1,0x1.d500a898f7f24p-1,0x1.4498cb7af2b64p2
+min,0x1.b8f586841bffcp0,0x1.61c0998390625p1,0x1.b8f586841bffcp0
+min,-0x1.443e68ba0322fp1,0x1.d7890d0ecaee8p3,-0x1.443e68ba0322fp1
+min,0x1.804ac6cecdb39p1,0x1.895ea7c1fcf4fp1,0x1.804ac6cecdb39p1
+min,-0x1.815862f8f6485p1,-0x1.815862f8f6485p1,-0x1.bfe7b047c0cd2p-1
+min,-0x1.19c230e5106cep-4,-0x1.19c230e5106cep-4,0x1.83646939220bap-3
+min,-0x1.33ed0b4cef53ep1,-0x1.bcbe25bbe45a3p-1,-0x1.33ed0b4cef53ep1
+min,-0x1.6edaedc73ac28p-1,-0x1.6edaedc73ac28p-1,0x1.f5ea59a73d2c8p-1
+min,-0x1.8a32540cff257p-1,0x1.d891764b4afc7p0,-0x1.8a32540cff257p-1
+min,0x1.fd551bb1c0d14p-3,0x1.a10e43e8080e7p-2,0x1.fd551bb1c0d14p-3
+min,-0x1.bd5990bc301d7p-5,-0x1.bd5990bc301d7p-5,-0x1.3ad52414fb659p-5
+min,0x1.cc95de78aef8dp-2,0x1.5cda5bd72af8fp0,0x1.cc95de78aef8dp-2
+min,-0x1.a7a2275c32905p-3,0x1.95476aa06da47p1,-0x1.a7a2275c32905p-3
+min,-0x1.4e336ed184b9p1,-0x1.0a824d5327642p0,-0x1.4e336ed184b9p1
+min,0x1.2696241411401p-4,0x1.2696241411401p-4,0x1.9c63dc87aaa93p-2
+min,-0x1.fd70ee2cf166dp1,-0x1.8b5e045b5fdbap-1,-0x1.fd70ee2cf166dp1
+min,0x1.f8c4c8fa2978ap-2,0x1.d9d4d4e4e68fap-1,0x1.f8c4c8fa2978ap-2
+min,-0x1.a0857e256e027p-3,0x1.4b4c644c8e532p4,-0x1.a0857e256e027p-3
+min,-0x1.bd89e6a9ea89p0,-0x1.bd89e6a9ea89p0,-0x1.9636ca86ebaadp-3
+min,-0x1.cffefe8a12e9ep0,0x1.3829a15c0609fp0,-0x1.cffefe8a12e9ep0
+min,-0x1.e80ec3fbd90a2p1,0x1.7a1ed46d8f78ep-2,-0x1.e80ec3fbd90a2p1
+min,0x1.d2c97c3e885aap-1,0x1.6bc43d43e903ep3,0x1.d2c97c3e885aap-1
+min,-0x1.bb71e7c6cab53p-7,-0x1.bb71e7c6cab53p-7,0x1.d8c3440fd7647p-1
+min,-0x1.67046d956ab12p1,-0x1.67046d956ab12p1,0x1.0ca6a127b808bp-3
+min,-0x1.07e98dc39755ep2,-0x1.752531e8e90d2p0,-0x1.07e98dc39755ep2
+min,-0x1.44a6e426d8222p2,0x1.e22481ebfe03bp5,-0x1.44a6e426d8222p2
+min,0x1.e41e3f941ff5ep-1,0x1.6d8025be2dbffp2,0x1.e41e3f941ff5ep-1
+min,-0x1.5446e930c75aap1,-0x1.49da496af8d41p1,-0x1.5446e930c75aap1
+min,0x1.5f38f4ec94713p-2,0x1.5f38f4ec94713p-2,0x1.7a01220226f5fp-2
+min,-0x1.9b4a035c03614p-1,-0x1.6a4d29ecc2fa7p-4,-0x1.9b4a035c03614p-1
+min,0x1.20b4c80b25be9p-1,0x1.dc7c67c9fd726p-1,0x1.20b4c80b25be9p-1
+min,0x1.f22075cdec45cp-5,0x1.7cbbc02f42fb1p-2,0x1.f22075cdec45cp-5
+min,-0x1.3dab3dd2da974p0,-0x1.3dab3dd2da974p0,-0x1.577dbfedb7979p-2
+min,-0x1.008180aa3ad24p1,-0x1.008180aa3ad24p1,-0x1.aa8ca022955dep-1
+min,-0x1.63f7ea987d0adp-4,-0x1.63f7ea987d0adp-4,0x1.d0e077799d2e8p1
+min,-0x1.dde07e80db509p-1,-0x1.dde07e80db509p-1,0x1.db20cf698cfe4p-1
+min,-0x1.ae1b9fe894e52p-2,0x1.6432af4638239p0,-0x1.ae1b9fe894e52p-2
+min,-0x1.9d83a101a86ccp0,-0x1.a653f08061f97p-4,-0x1.9d83a101a86ccp0
+min,0x1.99efea49f1495p-3,0x1.fad7dd51e4117p-1,0x1.99efea49f1495p-3
+min,-0x1.35497388bf3cbp2,-0x1.35497388bf3cbp2,0x1.2baeb4219b47ap-1
+min,0x1.0fadb0fb155c3p-1,0x1.0fadb0fb155c3p-1,0x1.8657d9977d917p0
+min,-0x1.46e4e9b96f9f7p1,-0x1.46e4e9b96f9f7p1,0x1.18aa8945c41ffp0
+min,-0x1.a0fd901352ccap0,-0x1.a0fd901352ccap0,0x1.88c5018a56f78p-5
+min,-0x1.674b8a2044c13p-1,-0x1.674b8a2044c13p-1,-0x1.0de4dda748eeep-1
+min,-0x1.a85f46badbc5cp0,-0x1.a85f46badbc5cp0,-0x1.7261fbfb3c976p-1
+min,-0x1.b9df217db7a2cp-2,0x1.0889c05cd2ecap-1,-0x1.b9df217db7a2cp-2
+min,-0x1.33221e13fc2dbp0,-0x1.6330d5283a276p-2,-0x1.33221e13fc2dbp0
+min,-0x1.88c13d0fb5a22p-2,-0x1.88c13d0fb5a22p-2,0x1.3986eb6becbbp-2
+min,-0x1.5d76c17f9c893p2,-0x1.7aa2aa56413p1,-0x1.5d76c17f9c893p2
+min,-0x1.360be8f735b0dp1,-0x1.b9df1f32ccee4p-3,-0x1.360be8f735b0dp1
+min,-0x1.3772007c0cb03p2,-0x1.3772007c0cb03p2,0x1.d1758810db26dp-4
+min,-0x1.4bd7e063b8ad8p2,-0x1.4bd7e063b8ad8p2,0x1.39a6d6f00bffdp0
+min,0x1.bd9ebd3b18aa4p-6,0x1.bd9ebd3b18aa4p-6,0x1.39d2605c7222ep0
+min,0x1.460bd0bfb9812p-2,0x1.cb61badc0d42ep-2,0x1.460bd0bfb9812p-2
+min,-0x1.1af162c525724p-2,-0x1.1af162c525724p-2,-0x1.09732a07365f2p-2
+min,-0x1.e358d4f069a66p2,-0x1.e358d4f069a66p2,0x1.ba64b7678c87dp4
+min,-0x1.cbf7833006116p0,-0x1.300a6e593b6cp-2,-0x1.cbf7833006116p0
+min,-0x1.20c3eb07baaeap-2,0x1.0a2dab0d9ca46p3,-0x1.20c3eb07baaeap-2
+min,0x1.8b2a647a609b7p-3,0x1.c8624c1a9621dp1,0x1.8b2a647a609b7p-3
+min,-0x1.3b0a1b6d077cdp4,-0x1.3b0a1b6d077cdp4,-0x1.067de6054e823p-1
+min,0x1.073456880db89p-1,0x1.073456880db89p-1,0x1.0f6614b3fe878p1
+min,-0x1.92a1feb2add1p-1,0x1.aa2e925776006p-2,-0x1.92a1feb2add1p-1
+min,-0x1.2d091736427b3p-1,-0x1.2d091736427b3p-1,-0x1.01434fc9abe1fp-1
+min,0x1.8c7b2d04ee95dp-4,0x1.8c7b2d04ee95dp-4,0x1.081d466e3ce4ap0
+min,-0x1.af8113522be2ep0,0x1.b3e4760fe707fp-2,-0x1.af8113522be2ep0
+min,-0x1.763300581d26dp-1,0x1.15a23a4a37ccfp0,-0x1.763300581d26dp-1
+min,-0x1.59565079e018cp-3,-0x1.59565079e018cp-3,0x1.b902426c23202p-3
+min,-0x1.2995e3abc47ddp-1,-0x1.2995e3abc47ddp-1,-0x1.089159215c8c7p-3
+min,0x1.b9ac949a714f4p-3,0x1.288efd4ea3781p1,0x1.b9ac949a714f4p-3
+min,-0x1.1b107e57195ecp0,-0x1.1b107e57195ecp0,0x1.dd5dfc47faebep3
+min,-0x1.891d8dc7f1cf5p0,-0x1.891d8dc7f1cf5p0,0x1.396c3e23a8d67p0
+min,-0x1.6e11956e6e222p2,-0x1.26aa706380677p0,-0x1.6e11956e6e222p2
+min,-0x1.31b28d71015dap-1,-0x1.31b28d71015dap-1,0x1.1fd5d137a4772p-2
+min,-0x1.7fac3d710e52ep0,0x1.893d0c6cfb41dp-1,-0x1.7fac3d710e52ep0
+min,-0x1.290ea7b4320f4p0,-0x1.290ea7b4320f4p0,-0x1.24d9a6462daf6p-3
+min,-0x1.0b73073da946p-1,-0x1.0b73073da946p-1,0x1.e39bf03d1f4afp-2
+min,0x1.7977ae89fa154p-1,0x1.7977ae89fa154p-1,0x1.ec60c74e164c8p-1
+min,0x1.d7aee0c6e6625p-3,0x1.bb8fc43d257d3p2,0x1.d7aee0c6e6625p-3
+min,-0x1.00ab753ab9c6ep0,-0x1.00ab753ab9c6ep0,0x1.fc49a71d17689p-2
+min,-0x1.482cfb8593e2p1,-0x1.482cfb8593e2p1,0x1.29df7c855981dp-2
+min,-0x1.b198b34422c07p-2,0x1.7f835f4bd8af2p-2,-0x1.b198b34422c07p-2
+min,0x1.a42c893fc161ap-1,0x1.a42c893fc161ap-1,0x1.c2173bc38cff3p1
+min,-0x1.f82ca9ee2de92p-2,0x1.02345d34264eap0,-0x1.f82ca9ee2de92p-2
+min,-0x1.2061d589bb4b6p2,-0x1.2061d589bb4b6p2,0x1.e2c0aacc85133p-1
+min,-0x1.2916403a07566p-1,-0x1.2916403a07566p-1,0x1.8470750c4fc3bp0
+min,0x1.e4ff5339ae12ap-1,0x1.1d98ea2485102p0,0x1.e4ff5339ae12ap-1
+min,0x1.dba31dc5ef2c4p-2,0x1.dba31dc5ef2c4p-2,0x1.92996be0e867bp-1
+min,0x1.979e52581bed3p-2,0x1.979e52581bed3p-2,0x1.56b76e856e6abp0
+min,-0x1.1be67a6ba09cdp2,-0x1.1be67a6ba09cdp2,0x1.9da5e6efa4367p-1
+min,-0x1.31cb8169ce6d1p0,-0x1.31cb8169ce6d1p0,0x1.fd8e186d36bfcp-3
+min,-0x1.634cf9402ddcep1,0x1.00473f38f91fap2,-0x1.634cf9402ddcep1
+min,-0x1.f0ae14204a759p2,-0x1.f0ae14204a759p2,0x1.45265bfbf6a3fp3
+min,0x1.8f09f028feaf6p-2,0x1.8f09f028feaf6p-2,0x1.9253fc0fb0c25p-1
+min,-0x1.3cd8d2ab263f1p-1,0x1.77becee8a3f81p0,-0x1.3cd8d2ab263f1p-1
+min,-0x1.3ce7a97163386p-1,-0x1.3ce7a97163386p-1,0x1.4aaadecc0b55p1
+min,-0x1.48e10ed6a0916p-2,-0x1.48e10ed6a0916p-2,0x1.84c5c9b63cd65p0
+min,0x1.2fdf5cb32b13bp-1,0x1.53b0c65709e7ep1,0x1.2fdf5cb32b13bp-1
+min,-0x1.5765b10b1fbc1p-1,0x1.1ade9d6dc4727p0,-0x1.5765b10b1fbc1p-1
+min,-0x1.10ae54518de82p0,-0x1.10ae54518de82p0,-0x1.19089b42bf9e3p-3
+min,0x1.eab67589caa88p-2,0x1.eab67589caa88p-2,0x1.bc68d01d7cbb4p1
+min,0x1.0781058915ba1p-1,0x1.0781058915ba1p-1,0x1.7b9108f9ad7p2
+min,-0x1.158873373f889p-1,0x1.7cd00b4b7869bp1,-0x1.158873373f889p-1
+min,0x1.7c365dec96c43p-2,0x1.7c365dec96c43p-2,0x1.86104c7100905p0
+min,-0x1.82fb00359be92p-2,0x1.b292515ab07a9p2,-0x1.82fb00359be92p-2
+min,-0x1.eaadde36a5e87p0,-0x1.16bce129cd9c8p-1,-0x1.eaadde36a5e87p0
+min,-0x1.008ae7b47fc2fp1,-0x1.c0555a351b89ap-2,-0x1.008ae7b47fc2fp1
+min,-0x1.9d065ed72be6dp1,0x1.1534ff6bbb57p-2,-0x1.9d065ed72be6dp1
+min,0x1.07938b9c6febep1,0x1.2252865eae102p1,0x1.07938b9c6febep1
+min,0x1.838467e24e11ep-3,0x1.838467e24e11ep-3,0x1.09a6301cf209ap0
+min,-0x1.75cd92b765f79p-3,0x1.fcbd7a7e6a031p1,-0x1.75cd92b765f79p-3
+min,-0x1.291c03cea77a4p1,0x1.383becfd3de9cp-2,-0x1.291c03cea77a4p1
+min,-0x1.dded413d25462p-1,-0x1.bc1a66ad220a2p-1,-0x1.dded413d25462p-1
+min,-0x1.c46c3d6f0a42fp-2,0x1.b5a7b9ec5f02fp-1,-0x1.c46c3d6f0a42fp-2
+min,-0x1.579a90bbd54d2p3,-0x1.23e73b0fa51fdp-1,-0x1.579a90bbd54d2p3
+min,-0x1.fff1fc8af0ea8p0,0x1.339b2190df843p0,-0x1.fff1fc8af0ea8p0
+min,-0x1.a15357ed77e9p-3,0x1.aca7e28d1eee6p-1,-0x1.a15357ed77e9p-3
+min,-0x1.86f0707a28e74p1,-0x1.5212591d1b84bp0,-0x1.86f0707a28e74p1
+min,0x1.b7f4f1cc7086dp-1,0x1.b7f4f1cc7086dp-1,0x1.23a5b48fcc793p0
+min,-0x1.4639a5f929423p-3,0x1.3d16734d170f6p0,-0x1.4639a5f929423p-3
+min,-0x1.11552179c7f92p-1,-0x1.11552179c7f92p-1,0x1.a1b4268ed58fbp0
+min,-0x1.42ce24a8a256fp0,-0x1.42ce24a8a256fp0,-0x1.205189643d941p-1
+min,-0x1.e24d0eef7619p1,0x1.fdbb6fec69597p-2,-0x1.e24d0eef7619p1
+min,-0x1.148aead0c530bp5,-0x1.148aead0c530bp5,-0x1.3571cb1c20489p0
+min,-0x1.1efd819f91dbfp-2,-0x1.6cf5c6cd76b48p-3,-0x1.1efd819f91dbfp-2
+min,0x1.4c2aab84a2edbp-1,0x1.3cc62c5b5d4acp1,0x1.4c2aab84a2edbp-1
+min,-0x1.c4bec7964c1dp1,-0x1.c4bec7964c1dp1,-0x1.16585f3a378bcp1
+min,-0x1.e50e295fe6847p-1,-0x1.e50e295fe6847p-1,0x1.16226dfd2aabp0
+min,-0x1.a29e12c602ea1p-6,-0x1.a29e12c602ea1p-6,0x1.0f621347a3362p-5
+min,-0x1.185b0afb229dcp-2,-0x1.185b0afb229dcp-2,0x1.7b94a5681c7c7p-1
+min,-0x1.efd68d4fc0d47p0,-0x1.efd68d4fc0d47p0,-0x1.f7908abf9d8cdp-1
+min,-0x1.3a0267472a46cp2,0x1.2fd06ba2f553p-1,-0x1.3a0267472a46cp2
+min,-0x1.5df3ef4ea824dp-3,-0x1.5df3ef4ea824dp-3,0x1.5a16dd49f65fap0
+min,-0x1.39730602fe424p2,-0x1.56da97ba0787dp-3,-0x1.39730602fe424p2
+min,-0x1.af04c0e061947p0,0x1.e80882cd87a91p-2,-0x1.af04c0e061947p0
+min,-0x1.35cb5a414d308p2,-0x1.cb532bb97b52dp0,-0x1.35cb5a414d308p2
+min,0x1.b5f60b456b70dp-2,0x1.b5f60b456b70dp-2,0x1.82fffd7d5415dp0
+min,0x1.5c8a81e9f07e7p0,0x1.2e731b3b69a8cp1,0x1.5c8a81e9f07e7p0
+min,-0x1.7b0832976dff7p0,-0x1.7b0832976dff7p0,0x1.e364f679bf66bp-4
+min,-0x1.29e86809f4d32p2,0x1.e901e1b270bcfp-1,-0x1.29e86809f4d32p2
+min,-0x1.9c34005f9660dp-2,-0x1.9c34005f9660dp-2,0x1.5f03fa3b42fe1p-2
+min,-0x1.a046e65b3c456p-1,-0x1.a046e65b3c456p-1,0x1.f03620aa8ec09p-2
+min,-0x1.f581433baebbfp-8,-0x1.f581433baebbfp-8,0x1.b3456be2b36f8p-2
+min,-0x1.19389067a4bd5p-1,0x1.c5f73e666db0cp-2,-0x1.19389067a4bd5p-1
+min,-0x1.05f048693203fp1,-0x1.f5cacbe6855c4p-3,-0x1.05f048693203fp1
+min,-0x1.5ab3f8d498c8bp0,0x1.7c28d87baaecdp-1,-0x1.5ab3f8d498c8bp0
+min,-0x1.980a2fbf39e6bp-1,0x1.3b230bd4ceb4ap2,-0x1.980a2fbf39e6bp-1
+min,-0x1.07f038d7ae4bp0,-0x1.6cceed5d8afe1p-2,-0x1.07f038d7ae4bp0
+min,-0x1.1028a1ea4819ep0,0x1.246cb2321c69ep3,-0x1.1028a1ea4819ep0
+min,-0x1.3915753b2f211p0,0x1.b6ff957de56cp-8,-0x1.3915753b2f211p0
+min,-0x1.fc7df66f806f8p-1,0x1.764610e115881p-1,-0x1.fc7df66f806f8p-1
+min,-0x1.23c638306f8e8p-7,0x1.e5e780c1ed765p-1,-0x1.23c638306f8e8p-7
+min,0x1.86e6ffdca85bcp-1,0x1.1610ff1ddd62ep0,0x1.86e6ffdca85bcp-1
+min,0x1.3369be7382cb8p-1,0x1.aa86c4209f5eap-1,0x1.3369be7382cb8p-1
+min,-0x1.655e6a5389e78p1,-0x1.655e6a5389e78p1,0x1.c857034185afdp-1
+min,-0x1.9a3df57c6e1e4p-5,0x1.5003df95d3ec1p0,-0x1.9a3df57c6e1e4p-5
+min,-0x1.b0c7bfebfb80fp4,-0x1.b0c7bfebfb80fp4,0x1.bacb853d5d68cp3
+min,0x1.6e77565bcbec2p-1,0x1.5f57d8bdecf2fp1,0x1.6e77565bcbec2p-1
+min,-0x1.7a344909b4508p-7,0x1.658a46fe9a9fbp1,-0x1.7a344909b4508p-7
+min,-0x1.b9d0826f5f698p-5,0x1.5bded8ac0971cp-1,-0x1.b9d0826f5f698p-5
+min,-0x1.97e6fe051caf9p-1,-0x1.97e6fe051caf9p-1,-0x1.1cd6541c7dc28p-1
+min,-0x1.e826faa85a8cap0,0x1.1ee6597d17c77p0,-0x1.e826faa85a8cap0
+min,0x1.c081562b3d5f9p-5,0x1.9973cd63cbc18p-1,0x1.c081562b3d5f9p-5
+min,-0x1.4ce116f80496ep-4,0x1.1a22bb6efef72p-6,-0x1.4ce116f80496ep-4
+min,-0x1.0f004c5397ce5p0,-0x1.e03a80bc462b9p-2,-0x1.0f004c5397ce5p0
+min,-0x1.e54e81b91b3a6p0,-0x1.090169b160b8ap0,-0x1.e54e81b91b3a6p0
+min,-0x1.8a92051939d93p-2,-0x1.8a92051939d93p-2,-0x1.7d9eb3345b248p-2
+min,-0x1.f78dd1ca43a2dp-2,0x1.2665f9efc27dfp-1,-0x1.f78dd1ca43a2dp-2
+min,-0x1.1f4f31c42bfebp0,-0x1.1f4f31c42bfebp0,0x1.1c156fc7f2067p-1
+rint,-0x0.0p0,-0x1.268abd7b97d4dp-4
+rint,-0x0.0p0,-0x1.ce90039b60aebp-4
+rint,0x1.0p0,0x1.e4ecfa4f952e7p-1
+rint,-0x1.8p1,-0x1.afd4d19b7f8dap1
+rint,0x1.0p2,0x1.da3bd68bd4ddp1
+rint,-0x1.0p0,-0x1.0c3beddeb78a4p-1
+rint,0x1.0p0,0x1.75ef526669baap-1
+rint,0x1.0p0,0x1.74c104b92d4f9p0
+rint,-0x1.0p0,-0x1.3ed05cc70184fp0
+rint,-0x1.0p0,-0x1.e1a608b27df63p-1
+rint,-0x0.0p0,-0x1.af55e5fdbcc39p-3
+rint,0x1.0p0,0x1.ad5f44a429e87p-1
+rint,0x0.0p0,0x1.27cb5aab0dc54p-2
+rint,0x0.0p0,0x1.6699d74d1ce71p-2
+rint,0x0.0p0,0x1.ea333793843b6p-2
+rint,-0x1.0p0,-0x1.1bd32dc0009bfp-1
+rint,-0x1.8p1,-0x1.6ee93cb207aefp1
+rint,-0x1.0p0,-0x1.0de525de65447p-1
+rint,0x1.0p0,0x1.0148b70820c4dp-1
+rint,-0x0.0p0,-0x1.10805217b21aap-2
+rint,0x0.0p0,0x1.3d5c1de583edbp-3
+rint,0x1.0p0,0x1.a03b3152d028dp-1
+rint,-0x1.0p0,-0x1.5f041c44e90d1p-1
+rint,0x1.0p0,0x1.49439046777f9p0
+rint,-0x1.0p1,-0x1.28d5436eb7d2cp1
+rint,0x1.8p2,0x1.8b46c1838b98ap2
+rint,-0x0.0p0,-0x1.0471304f5a054p-5
+rint,0x0.0p0,0x1.9e8b18c8ebb83p-3
+rint,-0x1.0p1,-0x1.0a1df02bedaefp1
+rint,-0x0.0p0,-0x1.9a5d030e54e1cp-3
+rint,-0x1.8p1,-0x1.52f62b561d26ap1
+rint,0x0.0p0,0x1.be298f5967fd8p-6
+rint,-0x0.0p0,-0x1.f3f7d52af06dp-3
+rint,0x0.0p0,0x1.1f1297cdaad7fp-4
+rint,0x1.cp3,0x1.c5acc7f21f38dp3
+rint,-0x0.0p0,-0x1.c007c15df048ep-2
+rint,0x1.0p0,0x1.ddb83a6a98236p-1
+rint,-0x1.0p0,-0x1.10a321d00f1ebp-1
+rint,-0x1.8p1,-0x1.74981d40f271ep1
+rint,-0x1.0p0,-0x1.1fb6fbae1d141p-1
+rint,-0x0.0p0,-0x1.415207ed705b6p-2
+rint,0x0.0p0,0x1.721d06298d307p-3
+rint,0x0.0p0,0x1.f48709c1582f3p-4
+rint,0x1.0p1,0x1.f2cc062d0b567p0
+rint,0x1.0p1,0x1.ceac8b442b1b2p0
+rint,-0x1.0p0,-0x1.3522e3b9f349ap-1
+rint,-0x1.0p1,-0x1.35afc5d834dfap1
+rint,0x1.8p1,0x1.7e7edf2fdff71p1
+rint,-0x1.0p2,-0x1.10fc2ad87812cp2
+rint,-0x0.0p0,-0x1.8e02dcac1f3e3p-4
+rint,0x0.0p0,0x1.9c3a20144eb05p-7
+rint,-0x1.0p1,-0x1.3d52736f68b18p1
+rint,-0x1.cp2,-0x1.acb397da75f33p2
+rint,0x0.0p0,0x1.2b2b450cc38c6p-2
+rint,0x1.0p0,0x1.0a831b90c4eeep-1
+rint,-0x1.0p0,-0x1.12eedbd5f386fp0
+rint,0x1.0p0,0x1.34a220f0a02e2p0
+rint,0x1.0p1,0x1.04a277452476ep1
+rint,0x1.0p0,0x1.74e575fa823c4p-1
+rint,-0x1.8p2,-0x1.78205b0f35ab5p2
+rint,-0x1.0p0,-0x1.24a7e6a756508p0
+rint,-0x0.0p0,-0x1.6974bb79f8e3bp-2
+rint,-0x1.2p3,-0x1.15a591f8587fep3
+rint,-0x1.8p1,-0x1.be9c1872a9ae6p1
+rint,-0x1.8p2,-0x1.6b63b4774299ap2
+rint,-0x1.0p0,-0x1.01adda08540dp0
+rint,-0x1.0p0,-0x1.340ebda39a1d7p0
+rint,-0x1.0p0,-0x1.0b2ef4d4a5c38p0
+rint,0x0.0p0,0x1.02a715d4ded6dp-4
+rint,0x1.8p1,0x1.8970f490209afp1
+rint,-0x0.0p0,-0x1.e2a29b50fab79p-5
+rint,0x1.0p1,0x1.bd3180ca69342p0
+rint,-0x1.8p1,-0x1.6a707eb8365a4p1
+rint,-0x0.0p0,-0x1.0822c287571bbp-2
+rint,-0x0.0p0,-0x1.0774d818c096bp-2
+rint,-0x0.0p0,-0x1.cb57cd88b6814p-2
+rint,-0x1.6cp6,-0x1.6b3ee9a81134ep6
+rint,0x1.0p1,0x1.a4a0c509da1adp0
+rint,0x1.4p2,0x1.51c88432f3971p2
+rint,-0x1.0p0,-0x1.486abf9b592f6p-1
+rint,0x1.0p0,0x1.d80857586bc6fp-1
+rint,0x0.0p0,0x1.578876d5d5b3p-4
+rint,0x0.0p0,0x1.5b4c6a063ecddp-2
+rint,-0x1.8p3,-0x1.8109174b6f54fp3
+rint,0x1.3b4p10,0x1.3b4fc176c52cbp10
+rint,0x1.0p0,0x1.88530af7996bfp-1
+rint,0x0.0p0,0x1.c6ef91def2719p-7
+rint,-0x1.0p0,-0x1.003eb6cf0dc56p0
+rint,-0x0.0p0,-0x1.a80b404026eb5p-2
+rint,0x1.0p0,0x1.298d6a47d157ap0
+rint,-0x0.0p0,-0x1.933e7d46c7f34p-2
+rint,-0x1.0p1,-0x1.3c9574c6d096ap1
+rint,-0x0.0p0,-0x1.61caab39e144ep-2
+rint,-0x1.0p1,-0x1.042a8d6059565p1
+rint,-0x0.0p0,-0x1.0af3cdc9934e8p-5
+rint,-0x1.0p0,-0x1.3484927522febp0
+rint,0x0.0p0,0x1.734e12503c09bp-2
+rint,-0x1.0p3,-0x1.0e6cc242db1fdp3
+rint,-0x1.8p1,-0x1.4def7e9d6dfb9p1
+rint,0x1.0p1,0x1.867db25aa4c32p0
+rint,0x1.8p2,0x1.81caf889ccfb8p2
+rint,0x0.0p0,0x1.3251cfb971c4p-3
+rint,-0x1.0p0,-0x1.3cdad02b0127ep-1
+rint,-0x1.0p0,-0x1.072c2cf906319p0
+rint,-0x1.0p4,-0x1.045edd6c4c77cp4
+rint,-0x1.4p2,-0x1.2683e3e45b08cp2
+rint,-0x1.0p0,-0x1.356de8ee4699bp-1
+rint,0x1.0p2,0x1.c608611d27d43p1
+rint,0x0.0p0,0x1.72093650a52e4p-5
+rint,-0x1.0p0,-0x1.af9180dd287afp-1
+rint,-0x0.0p0,-0x1.6d67d3b3f0b87p-2
+rint,0x0.0p0,0x1.b8160d95ed57fp-2
+rint,0x1.4p2,0x1.55631268345bp2
+rint,0x1.0p0,0x1.2d1e3d29b568ap-1
+rint,-0x0.0p0,-0x1.53cf3c25e9902p-2
+rint,0x0.0p0,0x1.810155815f88p-2
+rint,0x1.0p1,0x1.e27bb3c0d372ap0
+rint,0x1.0p0,0x1.f93f6636ecd53p-1
+rint,0x1.8p1,0x1.a15121e27b58fp1
+rint,-0x1.0p0,-0x1.c79b4a9a78428p-1
+rint,-0x1.8p1,-0x1.54539c2aee079p1
+rint,0x1.0p1,0x1.a621d064219ecp0
+rint,0x1.0p0,0x1.4b2e7fd5a37c8p-1
+rint,-0x1.8p1,-0x1.589f47d9d3c4cp1
+rint,0x1.4p3,0x1.3818b56b20c08p3
+rint,-0x1.0p2,-0x1.f347d0a2f131fp1
+rint,-0x1.1p5,-0x1.0c44185d3cadfp5
+rint,-0x1.8p1,-0x1.4fe27fb2b0c53p1
+rint,0x1.0p0,0x1.5a582cbefb753p0
+rint,-0x1.0p2,-0x1.f092a0e332f9cp1
+rint,-0x1.0p0,-0x1.129eb68b04642p-1
+rint,0x1.0p2,0x1.c69b739b282fap1
+rint,0x0.0p0,0x1.604287f5a9429p-3
+rint,0x1.8p1,0x1.aa964836cb159p1
+rint,-0x1.0p1,-0x1.2fa3611ab6901p1
+rint,-0x1.6p3,-0x1.608a85772ead9p3
+rint,0x1.0p0,0x1.34f6be354890ap0
+rint,0x0.0p0,0x1.b2383068a5d09p-3
+rint,-0x1.0p0,-0x1.39707c4318253p0
+rint,-0x1.0p1,-0x1.199a1176dbd0ap1
+rint,-0x1.0p1,-0x1.a3f67dd020e44p0
+rint,-0x1.0p0,-0x1.8e05241eda779p-1
+rint,0x1.8p1,0x1.5d3a575dd10d8p1
+rint,-0x1.0p0,-0x1.14c85ca3d3d11p0
+rint,-0x1.0p0,-0x1.9e8c010f8ac2fp-1
+rint,-0x0.0p0,-0x1.c638361514109p-3
+rint,0x1.0p0,0x1.975be2d983681p-1
+rint,-0x1.1p5,-0x1.0f5471d8cd949p5
+rint,-0x1.0p1,-0x1.2173e0a3d232fp1
+rint,-0x0.0p0,-0x1.85e89615d5d38p-7
+rint,0x1.0p0,0x1.d74d2a411a4bbp-1
+rint,0x1.0p0,0x1.b64cf0264b1cp-1
+rint,0x0.0p0,0x1.6b739bd0f2b3p-2
+rint,0x0.0p0,0x1.d36b272bef8a3p-3
+rint,-0x1.0p0,-0x1.4fcbac94f975bp0
+rint,-0x1.0p0,-0x1.0c75ec256951ep0
+rint,0x0.0p0,0x1.d04737a528f0bp-2
+rint,-0x1.0p0,-0x1.3b8eb84ec9779p0
+rint,-0x1.0p0,-0x1.f6761584c5abbp-1
+rint,0x0.0p0,0x1.c2e85bc939218p-2
+rint,-0x1.0p1,-0x1.ca9e6a69f834ep0
+rint,-0x1.0p0,-0x1.916e37ff31e97p-1
+rint,0x1.0p1,0x1.3c871f6a61f44p1
+rint,0x1.4p2,0x1.295c95d904121p2
+rint,0x0.0p0,0x1.7645fac957147p-2
+rint,-0x1.8p1,-0x1.411df06a5babp1
+rint,-0x1.0p0,-0x1.21c5d31f6d27dp0
+rint,0x0.0p0,0x1.6fcc22eb7ce3ep-3
+rint,-0x0.0p0,-0x1.f98ce2709e33cp-2
+rint,0x1.0p1,0x1.28a6a7522f16ap1
+rint,-0x1.0p0,-0x1.3a507d95ce782p-1
+rint,-0x1.0p0,-0x1.420022071b16fp-1
+rint,-0x1.0p0,-0x1.1f391e0a98888p-1
+rint,0x1.0p1,0x1.bed218a13531ap0
+rint,0x1.0p2,0x1.db4357d53c349p1
+rint,-0x1.0p3,-0x1.f0827e913504dp2
+rint,0x0.0p0,0x1.31c6aa34c1195p-4
+rint,-0x1.0p0,-0x1.985452fd721c5p-1
+rint,-0x0.0p0,-0x1.4ad70030a2d28p-3
+rint,-0x1.1p4,-0x1.17d28e9b110d3p4
+rint,0x1.0p0,0x1.595b1ca5e2a74p0
+rint,-0x1.0p0,-0x1.04e0cd5ad5047p0
+rint,0x0.0p0,0x1.66693ef0a6de5p-2
+rint,-0x0.0p0,-0x1.23dc08e8cd76dp-9
+rint,0x0.0p0,0x1.438d036dcda45p-4
+rint,0x1.0p0,0x1.def796f294cbp-1
+rint,-0x0.0p0,-0x1.bf0fb62b5523fp-2
+rint,0x1.0p1,0x1.b39853ef0793bp0
+rint,0x1.0p4,0x1.f436c1fd8da07p3
+rint,-0x1.0p0,-0x1.a8160b5980e3ep-1
+rint,0x1.9p4,0x1.8833cb03caaa3p4
+rint,-0x0.0p0,-0x1.22fc97f963e56p-2
+rint,-0x1.0p0,-0x1.1bccce0791131p0
+rint,-0x1.cp2,-0x1.caa0e2178cd8ep2
+rint,0x1.bp5,0x1.b264348bcc276p5
+rint,0x0.0p0,0x1.8c6767b398dcep-2
+rint,-0x1.0p0,-0x1.7dccb23a33987p0
+rint,-0x1.0p0,-0x1.f26cf24d7d559p-1
+rint,-0x1.0p1,-0x1.eaaffa465b2a9p0
+rint,0x1.0p0,0x1.6c6dc2105be73p0
+signum,0x1.0p0,0x1.1a3d4fc7a8b02p-2
+signum,-0x1.0p0,-0x1.fe228b95ba25p-1
+signum,-0x1.0p0,-0x1.21fb1cbc2abdap0
+signum,-0x1.0p0,-0x1.3868b16944313p0
+signum,0x1.0p0,0x1.c66f8e4997682p-1
+signum,-0x1.0p0,-0x1.b0044eb46302p0
+signum,-0x1.0p0,-0x1.0131e3e8d92bdp-2
+signum,0x1.0p0,0x1.cac5840d66fe4p-3
+signum,0x1.0p0,0x1.572daf6ef2c5ap0
+signum,0x1.0p0,0x1.2e0c4ad74ec76p3
+signum,0x1.0p0,0x1.2710c81ed7afdp-2
+signum,-0x1.0p0,-0x1.e0e0fd00294d8p1
+signum,0x1.0p0,0x1.291f5a63a7303p3
+signum,0x1.0p0,0x1.b57ee4f88101bp0
+signum,-0x1.0p0,-0x1.3d767f97d77a5p0
+signum,-0x1.0p0,-0x1.84de638b42e32p0
+signum,-0x1.0p0,-0x1.0325a07f68cc8p1
+signum,0x1.0p0,0x1.4fe6826cce163p0
+signum,0x1.0p0,0x1.5fef43261ddabp1
+signum,-0x1.0p0,-0x1.bb43de2566d35p-3
+signum,-0x1.0p0,-0x1.fb641d350b093p0
+signum,0x1.0p0,0x1.887f25688ea32p-2
+signum,-0x1.0p0,-0x1.8f20d2d9d6ee5p-1
+signum,-0x1.0p0,-0x1.a19d0ac67fbb6p0
+signum,-0x1.0p0,-0x1.2bf0b23fc1b4ep1
+signum,0x1.0p0,0x1.650cec3003075p-1
+signum,-0x1.0p0,-0x1.ea4e336101c8p1
+signum,0x1.0p0,0x1.675f330659971p0
+signum,0x1.0p0,0x1.73fffcb287664p0
+signum,0x1.0p0,0x1.365746730f361p0
+signum,0x1.0p0,0x1.5f4d80f30fe66p-2
+signum,0x1.0p0,0x1.9a043c1b669p-6
+signum,0x1.0p0,0x1.763b03359f34ep-3
+signum,-0x1.0p0,-0x1.2245446decb07p0
+signum,-0x1.0p0,-0x1.ca16429735d7fp-2
+signum,-0x1.0p0,-0x1.430f48f2008d1p-2
+signum,-0x1.0p0,-0x1.28d356e3ae333p-1
+signum,0x1.0p0,0x1.b2fb022a4b2edp-5
+signum,-0x1.0p0,-0x1.0f49c17309a43p-4
+signum,-0x1.0p0,-0x1.4de1cb5097a3ep-2
+signum,0x1.0p0,0x1.4b43fccb09cb6p-1
+signum,0x1.0p0,0x1.b518077afad3dp-1
+signum,0x1.0p0,0x1.a071852a00314p0
+signum,-0x1.0p0,-0x1.dd00ccaa516c9p-1
+signum,-0x1.0p0,-0x1.68a31396f668ep0
+signum,-0x1.0p0,-0x1.22c69d1964442p0
+signum,0x1.0p0,0x1.57c6f812fee5fp-2
+signum,0x1.0p0,0x1.9a39f3f040c8ap6
+signum,-0x1.0p0,-0x1.1b0911ab7ac1dp-2
+signum,0x1.0p0,0x1.31801f7d375a2p-1
+signum,-0x1.0p0,-0x1.f3f8fcc027d4cp-2
+signum,-0x1.0p0,-0x1.71cc9ad409ea3p1
+signum,-0x1.0p0,-0x1.e2fed0da81e26p-3
+signum,0x1.0p0,0x1.7370cd960d4bp-2
+signum,0x1.0p0,0x1.fe003e889800cp0
+signum,0x1.0p0,0x1.1a5aefcdaa3ecp1
+signum,-0x1.0p0,-0x1.3a970a5def0b2p1
+signum,-0x1.0p0,-0x1.28aaff34f1f45p7
+signum,0x1.0p0,0x1.1c0a51cf8cdd6p2
+signum,0x1.0p0,0x1.4438e1b39db8ep-2
+signum,0x1.0p0,0x1.cd7c85cfe2a64p0
+signum,-0x1.0p0,-0x1.af0deb5d481a6p-4
+signum,-0x1.0p0,-0x1.ca053b9bfce0dp-2
+signum,-0x1.0p0,-0x1.2895c9f97406fp2
+signum,-0x1.0p0,-0x1.f22fca52bf512p5
+signum,0x1.0p0,0x1.41482e8745338p0
+signum,-0x1.0p0,-0x1.25f7f46a2f42bp1
+signum,0x1.0p0,0x1.567ad05164c56p-3
+signum,-0x1.0p0,-0x1.8055a246a94fap1
+signum,0x1.0p0,0x1.9a42bc3a82794p0
+signum,-0x1.0p0,-0x1.3bb3ad9a7630dp1
+signum,-0x1.0p0,-0x1.246146574c798p-1
+signum,0x1.0p0,0x1.4f78727ba4c6ap-3
+signum,0x1.0p0,0x1.1b98c2b509583p1
+signum,-0x1.0p0,-0x1.3dac8b72f4cfp1
+signum,0x1.0p0,0x1.6f46aff1cfca7p4
+signum,0x1.0p0,0x1.4515b3ad37985p1
+signum,-0x1.0p0,-0x1.21571f9f3d1aap-2
+signum,0x1.0p0,0x1.7a60191e80647p-1
+signum,-0x1.0p0,-0x1.e53fc2572804ep0
+signum,0x1.0p0,0x1.0f1a092b52ab7p1
+signum,0x1.0p0,0x1.f6d2a77acdf0bp1
+signum,0x1.0p0,0x1.1b946f3faf8c1p0
+signum,-0x1.0p0,-0x1.aeeaa2713927cp-1
+signum,-0x1.0p0,-0x1.f0c59b6da2eedp-6
+signum,-0x1.0p0,-0x1.908bd8875fb43p-1
+signum,-0x1.0p0,-0x1.8e5f9318ff445p0
+signum,-0x1.0p0,-0x1.58ad85cb73478p-3
+signum,-0x1.0p0,-0x1.27491677b5921p4
+signum,0x1.0p0,0x1.1a49b147641bdp1
+signum,-0x1.0p0,-0x1.29fe7b26dabdp-2
+signum,0x1.0p0,0x1.525fe0c81e43cp0
+signum,-0x1.0p0,-0x1.5d8e7da56990ap2
+signum,-0x1.0p0,-0x1.798a32640bacbp-1
+signum,0x1.0p0,0x1.942046d0d9f15p0
+signum,-0x1.0p0,-0x1.8383fe82a12c8p-1
+signum,0x1.0p0,0x1.5898f1786262ap-1
+signum,-0x1.0p0,-0x1.021b830a8beb8p0
+signum,-0x1.0p0,-0x1.b1230ebba73fbp-2
+signum,0x1.0p0,0x1.a3e32096e6635p0
+signum,0x1.0p0,0x1.dad58f3211322p-3
+signum,-0x1.0p0,-0x1.3c3b078d86766p-3
+signum,0x1.0p0,0x1.ccc09ab1c1addp0
+signum,-0x1.0p0,-0x1.58d9b6a6d1431p0
+signum,0x1.0p0,0x1.e34a9c872b574p6
+signum,0x1.0p0,0x1.7482aceab150ep0
+signum,-0x1.0p0,-0x1.486a2958dd734p1
+signum,-0x1.0p0,-0x1.0b9f0216571b4p-1
+signum,-0x1.0p0,-0x1.35777db826f93p-6
+signum,0x1.0p0,0x1.0d42beac642dp1
+signum,0x1.0p0,0x1.a87e45f5905ep-2
+signum,-0x1.0p0,-0x1.f9722a203855ep3
+signum,0x1.0p0,0x1.d584c8358f506p-2
+signum,-0x1.0p0,-0x1.e1320ee76d769p1
+signum,-0x1.0p0,-0x1.88334cc2177cbp-1
+signum,0x1.0p0,0x1.e908ff7ee1169p-1
+signum,0x1.0p0,0x1.55ef3fc6f89b2p-2
+signum,-0x1.0p0,-0x1.9ac2c7f86c6cdp-2
+signum,0x1.0p0,0x1.83f8e75e71eb2p-1
+signum,0x1.0p0,0x1.c9b44dfc4af65p1
+signum,0x1.0p0,0x1.9355350574ca9p2
+signum,0x1.0p0,0x1.585b4f630c574p1
+signum,0x1.0p0,0x1.1c96d0c66af4dp0
+signum,-0x1.0p0,-0x1.ab681f99c5d86p-3
+signum,0x1.0p0,0x1.9482749d0aa73p2
+signum,0x1.0p0,0x1.67cc7b0b4c26cp0
+signum,-0x1.0p0,-0x1.085f59e533c7ep-1
+signum,-0x1.0p0,-0x1.afefdc4c46c3ap0
+signum,0x1.0p0,0x1.6bb5e4a51967cp3
+signum,0x1.0p0,0x1.bfd9ab5f4332bp-1
+signum,-0x1.0p0,-0x1.1767d42fb2752p-3
+signum,0x1.0p0,0x1.95aaf6213e9c6p2
+signum,0x1.0p0,0x1.8825bf4dfdabfp0
+signum,-0x1.0p0,-0x1.1135f535c69dep-4
+signum,0x1.0p0,0x1.1f9e7b6d921b4p-2
+signum,0x1.0p0,0x1.4a9c752e94911p0
+signum,-0x1.0p0,-0x1.27f4c44a73fe6p-1
+signum,-0x1.0p0,-0x1.11f97648b9f8ap3
+signum,0x1.0p0,0x1.c77d53a50b053p0
+signum,-0x1.0p0,-0x1.d8113d6e9f8bcp-3
+signum,-0x1.0p0,-0x1.1d72c07d87e62p-2
+signum,-0x1.0p0,-0x1.358fe8d5cc199p0
+signum,-0x1.0p0,-0x1.aeead14f758b7p0
+signum,-0x1.0p0,-0x1.2a7e904ae4a44p1
+signum,-0x1.0p0,-0x1.e6b3bf0d17edbp-2
+signum,-0x1.0p0,-0x1.f4605a9efd9f1p0
+signum,-0x1.0p0,-0x1.d42845ce529bfp-3
+signum,-0x1.0p0,-0x1.64682ee910c7dp-8
+signum,0x1.0p0,0x1.8d935ae25468bp0
+signum,0x1.0p0,0x1.9de083cf13d31p0
+signum,0x1.0p0,0x1.33c2a52e9e197p-3
+signum,-0x1.0p0,-0x1.fdfbf0f5f8398p-4
+signum,-0x1.0p0,-0x1.c72c98ed1485dp0
+signum,-0x1.0p0,-0x1.bb8932b45fb62p-1
+signum,0x1.0p0,0x1.6e160c56703eap-1
+signum,-0x1.0p0,-0x1.fa25a6ee41b41p-1
+signum,-0x1.0p0,-0x1.272ac69f3cf22p0
+signum,-0x1.0p0,-0x1.71454149572f4p0
+signum,0x1.0p0,0x1.05c13c3872b5ap0
+signum,-0x1.0p0,-0x1.dc99d4ea8c043p-2
+signum,-0x1.0p0,-0x1.28eb471a3a91p-2
+signum,0x1.0p0,0x1.f40a33e7d49fbp-1
+signum,-0x1.0p0,-0x1.fda94be1a7904p-3
+signum,0x1.0p0,0x1.27074a195fb51p2
+signum,0x1.0p0,0x1.87b04e5581039p-3
+signum,0x1.0p0,0x1.9a188523a000cp2
+signum,-0x1.0p0,-0x1.e2a7f0d1cfdb8p-1
+signum,-0x1.0p0,-0x1.819901f0b0904p-3
+signum,0x1.0p0,0x1.2bb070c99fb6cp0
+signum,0x1.0p0,0x1.bb7402e945b7fp-4
+signum,-0x1.0p0,-0x1.7bf8d55eaefbdp1
+signum,-0x1.0p0,-0x1.199a2ffa37bf6p1
+signum,-0x1.0p0,-0x1.899df2cc40a33p-1
+signum,0x1.0p0,0x1.d8b19d1bed5eap-1
+signum,0x1.0p0,0x1.41ef45e1d237cp-1
+signum,0x1.0p0,0x1.fd50fff158b77p3
+signum,-0x1.0p0,-0x1.61db1558b5de3p5
+signum,0x1.0p0,0x1.082ef19a40405p1
+signum,0x1.0p0,0x1.48158d2f038eep-1
+signum,-0x1.0p0,-0x1.b9651dbebc609p2
+signum,0x1.0p0,0x1.c8f519f2f3045p-2
+signum,0x1.0p0,0x1.72a1e287cbf08p0
+signum,0x1.0p0,0x1.f09e7d5cd1a2ep-3
+signum,-0x1.0p0,-0x1.755699aee4ad9p-3
+signum,0x1.0p0,0x1.33c7b83b94af2p2
+signum,-0x1.0p0,-0x1.6c7c38f40084p1
+signum,-0x1.0p0,-0x1.e8073e9378aa3p-4
+signum,-0x1.0p0,-0x1.0d9e13d7f9284p0
+signum,-0x1.0p0,-0x1.14e0bcfb1aa8bp0
+signum,0x1.0p0,0x1.f2f0b1c247f41p-2
+signum,0x1.0p0,0x1.93c091038736cp2
+signum,0x1.0p0,0x1.5e0f2e629f9bep1
+signum,0x1.0p0,0x1.b5720829fea68p5
+signum,0x1.0p0,0x1.c056f6d23d03cp-1
+signum,-0x1.0p0,-0x1.2f7d64e8f0761p0
+signum,-0x1.0p0,-0x1.553f5170e1d75p-3
+signum,0x1.0p0,0x1.d8b9fda94abd4p-1
+signum,0x1.0p0,0x1.c31faf27fa01ep3
+signum,-0x1.0p0,-0x1.06058171a93d9p0
+signum,-0x1.0p0,-0x1.852592119514fp0
+toDegrees,0x1.9cc4da55f56cbp4,0x1.cd113dd73a73cp-2
+toDegrees,-0x1.94c416d548e15p2,-0x1.c420c0252959cp-4
+toDegrees,-0x1.7b02a36e7559fp5,-0x1.a75bcb9bdae6fp-1
+toDegrees,0x1.0f6e61abce825p7,0x1.2f31087c78663p1
+toDegrees,-0x1.be896265c1388p6,-0x1.f2c946a2c6a66p0
+toDegrees,-0x1.560657ad9eebdp4,-0x1.7e0b9b7822823p-2
+toDegrees,0x1.c97fc36ec2798p0,0x1.ff080809e5354p-6
+toDegrees,-0x1.231218346bfap6,-0x1.45210ae12d5dep0
+toDegrees,0x1.acd981a0f8f16p5,0x1.df07967013bfbp-1
+toDegrees,0x1.ffc04d8008847p5,0x1.1dd0d6e0a9014p0
+toDegrees,-0x1.22b4bf371bcefp6,-0x1.44b8c5afa5478p0
+toDegrees,-0x1.38f0f9d667f87p6,-0x1.5d8f0d930782dp0
+toDegrees,-0x1.516ecfff380abp7,-0x1.78ea87163eeabp1
+toDegrees,-0x1.2ae526db45ae4p7,-0x1.4dde7a996b9c8p1
+toDegrees,-0x1.a6b4650d4c965p5,-0x1.d82a67b42deaap-1
+toDegrees,0x1.7773b321056e7p6,0x1.a362445ee7c18p0
+toDegrees,-0x1.190c89382e7e9p4,-0x1.39ef493e52db9p-2
+toDegrees,0x1.42d69a1fb31b4p6,0x1.689d23fbea30ap0
+toDegrees,0x1.c8f48084d3c8fp6,0x1.fe6c7995f196fp0
+toDegrees,0x1.c5c438960265fp6,0x1.fadcae2a0e937p0
+toDegrees,-0x1.a296ca69d0b03p4,-0x1.d391849fee2e3p-2
+toDegrees,-0x1.90854d79fef1ep-1,-0x1.bf62cc5fffe35p-7
+toDegrees,-0x1.8e1570b872b7ap9,-0x1.bca9effb7253dp3
+toDegrees,0x1.0a21d4a34b9a3p3,0x1.2945c0511b397p-3
+toDegrees,-0x1.960053e8339dbp3,-0x1.c581fe108de79p-3
+toDegrees,0x1.880aeb1504fb8p4,0x1.b5ea74abe58d2p-2
+toDegrees,-0x1.74d2108f3c1aap3,-0x1.a071cf3c58906p-3
+toDegrees,0x1.c4324f9a9f8bdp5,0x1.f91bbe117d1cp-1
+toDegrees,0x1.18467de646d62p7,0x1.3912118f3c746p1
+toDegrees,0x1.0eed528a37375p9,0x1.2ea0df6c23f34p3
+toDegrees,-0x1.450d273c40222p6,-0x1.6b15fbfe1b148p0
+toDegrees,0x1.dd9b163174e74p3,0x1.0abed2c6e1761p-2
+toDegrees,0x1.60880fe3738a2p3,0x1.89c80d8ae0428p-3
+toDegrees,0x1.12bfe174fb77ap2,0x1.32e5eecd756dbp-4
+toDegrees,0x1.90c57dddec21ap1,0x1.bfaa7f87fb8a7p-5
+toDegrees,-0x1.3a350b8cda184p6,-0x1.5ef90ab264d6p0
+toDegrees,0x1.75031f7ed32cdp6,0x1.a0a89bb3a76ap0
+toDegrees,0x1.fcb5dee07145fp4,0x1.1c1e14b2b9db4p-1
+toDegrees,0x1.69114d2c22ba8p4,0x1.9350fd1d452d5p-2
+toDegrees,-0x1.526b1f129d2c1p5,-0x1.7a045c02d25bfp-1
+toDegrees,0x1.e2dfecd8124b2p3,0x1.0db028288dd15p-2
+toDegrees,-0x1.0dd14c6709a48p7,-0x1.2d639d6b5ce98p1
+toDegrees,0x1.2a01518efb356p6,0x1.4cdffc9db8986p0
+toDegrees,-0x1.9bc784f0c6b48p5,-0x1.cbf643e726dd8p-1
+toDegrees,-0x1.4f0025a5e36cep6,-0x1.763300f441a5p0
+toDegrees,0x1.689f3d35e9e25p3,0x1.92d19471a60b9p-3
+toDegrees,0x1.071bc5fd59a7fp4,0x1.25e51efb7444dp-2
+toDegrees,0x1.3d28cd1ab705cp6,0x1.62453abb2adc3p0
+toDegrees,-0x1.713bef68c5494p3,-0x1.9c703fc03e9d5p-3
+toDegrees,0x1.6618e48537401p3,0x1.8fff9a9c68351p-3
+toDegrees,-0x1.358164697bc5cp4,-0x1.59b88c71a52ddp-2
+toDegrees,0x1.7717dd5882015p6,0x1.a2fbafb0d679cp0
+toDegrees,-0x1.1b5f7b4512444p5,-0x1.3c87d8bc0f4f4p-1
+toDegrees,0x1.044ba83c26953p6,0x1.22c0be546d685p0
+toDegrees,-0x1.6d40cb9cad76ep9,-0x1.97fddbe158cc3p3
+toDegrees,0x1.3708b29f0dc25p5,0x1.5b6da41c12f38p-1
+toDegrees,-0x1.975ed02c432d9p6,-0x1.c7097d08166fp0
+toDegrees,0x1.4c557ad19a278p6,0x1.733875000be6cp0
+toDegrees,0x1.4734be48e506dp5,0x1.6d7e1dc7db526p-1
+toDegrees,0x1.485976815821dp6,0x1.6ec51657a80b1p0
+toDegrees,0x1.f2596d0c82a2fp5,0x1.1654ad221e6ep0
+toDegrees,0x1.8eff75442afa9p5,0x1.bdaf56785b7cbp-1
+toDegrees,0x1.e8e4b12a2aba2p8,0x1.110caef53c05dp3
+toDegrees,-0x1.c4fa982ea8112p6,-0x1.f9fb761682d11p0
+toDegrees,0x1.1a5f7514640c3p5,0x1.3b69dd67cf39fp-1
+toDegrees,-0x1.794600ac5da92p7,-0x1.a56b21e64998p1
+toDegrees,0x1.e35d13fe74edfp5,0x1.0df60e3206348p0
+toDegrees,-0x1.c4e1b476eda0ep4,-0x1.f9dfa8cf9b3d5p-2
+toDegrees,0x1.69682c8023cc2p5,0x1.93b206aeab843p-1
+toDegrees,-0x1.6b3653d3330f4p4,-0x1.95b641b33e0c1p-2
+toDegrees,0x1.b4a966dff8b42p5,0x1.e7c17e0aedc62p-1
+toDegrees,0x1.90ec5ba49fbb5p4,0x1.bfd5e989b0585p-2
+toDegrees,-0x1.e889680f077cap5,-0x1.10d9b32fdd367p0
+toDegrees,-0x1.3730338445bfcp7,-0x1.5b99c4527ddd1p1
+toDegrees,-0x1.022c00433be75p5,-0x1.20617946cc6bep-1
+toDegrees,0x1.12162302b21bp7,0x1.322853b853541p1
+toDegrees,0x1.b9be356b5ae5p6,0x1.ed6e81ec514c4p0
+toDegrees,0x1.9e768d7447387p3,0x1.cef5b0528789cp-3
+toDegrees,0x1.2adffc78f9eb4p6,0x1.4dd8b57b73478p0
+toDegrees,-0x1.3f4e073a6bbd3p7,-0x1.64aab8cf9710fp1
+toDegrees,0x1.c0aa08f3f6bbap4,0x1.f529a80fabcc6p-2
+toDegrees,-0x1.e192542d3cd5ap2,-0x1.0cf5d76d8bc39p-3
+toDegrees,0x1.04ab229374e59p6,0x1.232b64afd152ep0
+toDegrees,-0x1.f9e0a77142ffdp-1,-0x1.1a890b24927f6p-6
+toDegrees,0x1.e97f3f3966932p5,0x1.116300d074b9bp0
+toDegrees,-0x1.1cec99f1b0757p6,-0x1.3e436f08204c9p0
+toDegrees,-0x1.7d252f6ad8e33p6,-0x1.a9be4b43df93ap0
+toDegrees,-0x1.8a42007322f05p3,-0x1.b863e4e12bc6fp-3
+toDegrees,-0x1.278d84dfc3f4cp4,-0x1.4a22ba5b4331p-2
+toDegrees,-0x1.ed3a5058db8abp3,-0x1.137869c4a0318p-2
+toDegrees,-0x1.b5b4e4413337ep7,-0x1.e8ec48029555bp1
+toDegrees,0x1.5684eea8fbe01p3,0x1.7e99026a5d775p-3
+toDegrees,-0x1.4b23ed2f49fp5,-0x1.71e32698a8e3fp-1
+toDegrees,-0x1.df05855cfd054p8,-0x1.0b893eacbacc4p3
+toDegrees,-0x1.40573e27c281fp6,-0x1.65d2f82c221f3p0
+toDegrees,-0x1.68c5edf3d9b3ep5,-0x1.92fccc2599ddp-1
+toDegrees,0x1.16f591c9d9791p7,0x1.3799b906d8ee9p1
+toDegrees,0x1.2c9a73b1f03b8p3,0x1.4fc6f2a6f562cp-3
+toDegrees,-0x1.98e03048c019dp4,-0x1.c8b7f4f73266cp-2
+toDegrees,-0x1.be6f129011c73p6,-0x1.f2abe2a2e1c9dp0
+toDegrees,0x1.e5d4c67fad724p8,0x1.0f56dc9cfb8ddp3
+toDegrees,0x1.e8a586d34db52p7,0x1.10e967bc9c3f8p2
+toDegrees,0x1.0acde77827a8ep7,0x1.2a05f5915fde8p1
+toDegrees,-0x1.66c7f595b3323p4,-0x1.90c327c09c62ap-2
+toDegrees,0x1.8dd01c0733ae9p4,0x1.bc5c7e80a714cp-2
+toDegrees,0x1.1b088597a996dp6,0x1.3c26b633ca24fp0
+toDegrees,-0x1.cddf63ec90861p3,-0x1.01f55555933f7p-2
+toDegrees,-0x1.02b7b8b3d1fe1p6,-0x1.20fd8b01dd796p0
+toDegrees,-0x1.559d98a788a77p7,-0x1.7d969accdb9d9p1
+toDegrees,-0x1.3f5f0d0bfb216p6,-0x1.64bdbc8a7e518p0
+toDegrees,0x1.16226547ded9dp4,0x1.36add6dc29f2ap-2
+toDegrees,0x1.d4d4543876317p3,0x1.05d7ff438dc75p-2
+toDegrees,0x1.1d28bbaefee9dp5,0x1.3e869a00f7c61p-1
+toDegrees,-0x1.86579970698fap5,-0x1.b404332954a1ep-1
+toDegrees,0x1.2ef51ad45c23bp9,0x1.52681e197503fp3
+toDegrees,-0x1.3cf9701fe3407p6,-0x1.621052ffaaa7ap0
+toDegrees,0x1.e7244245038d5p3,0x1.10123b28dd00ap-2
+toDegrees,0x1.a5a03aa78362p5,0x1.d6f5ecd5f2423p-1
+toDegrees,0x1.e8f39b8a61b6ap3,0x1.1115038a9416bp-2
+toDegrees,0x1.3bf51b0182135p5,0x1.60ed87afc67a6p-1
+toDegrees,0x1.5b13311fb6c09p7,0x1.83afbbe37580cp1
+toDegrees,0x1.395e71b8dc57ap9,0x1.5e09548dca6fap3
+toDegrees,0x1.b5fd9e97cb653p7,0x1.e93d84e4beffdp1
+toDegrees,0x1.0b5531c717ccdp10,0x1.2a9d14762cdbep4
+toDegrees,-0x1.0f7be127bd95dp6,-0x1.2f401c4c8c6dap0
+toDegrees,-0x1.f8a402b4d979cp5,-0x1.19d832498ae13p0
+toDegrees,-0x1.8d2c07dfa6e11p5,-0x1.bba537696177bp-1
+toDegrees,-0x1.c154bc5577641p5,-0x1.f5e854bcf804bp-1
+toDegrees,-0x1.39d507bcace13p3,-0x1.5e8dcac830903p-3
+toDegrees,0x1.11e06dc88ae51p4,0x1.31ec55af95699p-2
+toDegrees,0x1.1ebf16f38b1d9p7,0x1.404c8193c1f93p1
+toDegrees,-0x1.708e7799a7b4ep4,-0x1.9bae7bc08c7c8p-2
+toDegrees,-0x1.5c8a2d06523abp9,-0x1.85529856c320fp3
+toDegrees,-0x1.5e2b963a36dp7,-0x1.8724d8fae038fp1
+toDegrees,0x1.3e13287c19be7p7,0x1.634b0236da71bp1
+toDegrees,0x1.a3ff712c87297p6,0x1.d5245e9b2e50cp0
+toDegrees,0x1.80d8a3f61cf0dp5,0x1.ade09c96d6ep-1
+toDegrees,0x1.cbaa19fa7d4edp5,0x1.00b99dd1e4d8ep0
+toDegrees,0x1.dc522f7f9e4e9p4,0x1.0a07215ac31f7p-1
+toDegrees,-0x1.2c3cf84f90a7ep3,-0x1.4f5e870a148f8p-3
+toDegrees,-0x1.1dc120f5ca3afp7,-0x1.3f30d4407fa7fp1
+toDegrees,0x1.6e2c3ba13a4d3p5,0x1.9904d85ecc7c9p-1
+toDegrees,-0x1.ea38a3aa95e47p7,-0x1.11ca8bb9c2c15p2
+toDegrees,-0x1.322c04414ec4cp8,-0x1.55ff51a36f15dp2
+toDegrees,-0x1.4fe90d155a88dp6,-0x1.773728f881204p0
+toDegrees,0x1.ff58a2d82d4b1p8,0x1.1d96f0e567a04p3
+toDegrees,-0x1.a25d798c48c75p5,-0x1.d3517ee076ecap-1
+toDegrees,0x1.6c39408ca491fp4,0x1.96d77a72adc61p-2
+toDegrees,0x1.58be156cc8725p7,0x1.8114c1f74781cp1
+toDegrees,-0x1.45cb34c0c3921p3,-0x1.6bea467e50e53p-3
+toDegrees,0x1.cf7a84939fa02p6,0x1.02daf3455c5ebp1
+toDegrees,0x1.c8d9ec779379ap5,0x1.fe4ec9630f342p-1
+toDegrees,0x1.40f290dd23f99p5,0x1.6680778b4b4dbp-1
+toDegrees,-0x1.d007e807137ccp5,-0x1.0329ea9fd53c5p0
+toDegrees,-0x1.0b45c757e1c32p5,-0x1.2a8bdc408764ap-1
+toDegrees,-0x1.260688556fd89p3,-0x1.486dfdea7261dp-3
+toDegrees,-0x1.e5e3535741671p8,-0x1.0f5efcf51e5d2p3
+toDegrees,-0x1.0086c685a5706p6,-0x1.1e8af5d50c276p0
+toDegrees,0x1.57a34296c3044p7,0x1.7fd8d738cb1ddp1
+toDegrees,0x1.2a33a57def28bp7,0x1.4d18341b9bfep1
+toDegrees,0x1.a7c08f4d64de1p6,0x1.d955f2c4fe762p0
+toDegrees,0x1.7128c6132b42ap3,0x1.9c5ad8709aa79p-3
+toDegrees,-0x1.688e096df3805p7,-0x1.92be5d5f8c398p1
+toDegrees,0x1.000dfdac23b5cp3,0x1.1e040ae962b82p-3
+toDegrees,-0x1.1af109f43a815p5,-0x1.3c0c7b234319cp-1
+toDegrees,0x1.fc9f8ecba486dp6,0x1.1c119e785bc66p1
+toDegrees,-0x1.aab953e1cd1d7p5,-0x1.dca7bbf503ce4p-1
+toDegrees,-0x1.5e8928b59890ep7,-0x1.878d5e64a5e27p1
+toDegrees,0x1.836a93ac41202p3,0x1.b0bf889de387cp-3
+toDegrees,0x1.3b7cdcc880872p6,0x1.6067379d26339p0
+toDegrees,0x1.c8056c371e64dp5,0x1.fd616bb8f3785p-1
+toDegrees,-0x1.ec401ac74c4bcp4,-0x1.12ecab81b3564p-1
+toDegrees,-0x1.ca28aa208a7a4p5,-0x1.ffc4b21fba5b4p-1
+toDegrees,-0x1.1a006a6cef937p6,-0x1.3affb3cdd2bf1p0
+toDegrees,0x1.563d185336d2bp9,0x1.7e48c436ce2a6p3
+toDegrees,-0x1.4ca0d7ea15c7fp8,-0x1.738ca398485b2p2
+toDegrees,0x1.009f3a101b96dp4,0x1.1ea645ce750cdp-2
+toDegrees,-0x1.2beb979f7ba94p5,-0x1.4f03a0b42782dp-1
+toDegrees,-0x1.0c9a2275da42ap6,-0x1.2c080aa4dcbeap0
+toDegrees,-0x1.6162e5122ed34p4,-0x1.8abc7dcdd3575p-2
+toDegrees,-0x1.41e855cd03379p6,-0x1.6792fe6ff2af7p0
+toDegrees,0x1.2db550afa1b3ap7,0x1.5102e8bd4e53ep1
+toDegrees,-0x1.f55dbe6f2720ep6,-0x1.1804051e6ce8ep1
+toDegrees,-0x1.2eb22726e4acdp3,-0x1.521d54e55310dp-3
+toDegrees,-0x1.3ef9ae1414208p7,-0x1.644c8107f5d37p1
+toDegrees,-0x1.2a6babb40908dp8,-0x1.4d56c882fd11ap2
+toDegrees,-0x1.6eb2ba40302ebp4,-0x1.999b13be37afp-2
+toDegrees,-0x1.1f825cdc83933p8,-0x1.4126a0d7b7ec8p2
+toDegrees,0x1.196d47a93599dp6,0x1.3a5b599fc865dp0
+toDegrees,-0x1.152cb9e9e5ap2,-0x1.359b6c87594cep-4
+toDegrees,0x1.e8033ad066cefp5,0x1.108ec2f31fd2p0
+toDegrees,-0x1.380d292404d8ap1,-0x1.5c9094bb0fa5ap-5
+toDegrees,-0x1.e3b0170b51c6cp8,-0x1.0e246b0558ec9p3
+toDegrees,0x1.5292d8b4c17e7p7,0x1.7a30bb99bbf7ap1
+toDegrees,0x1.a643cd81be412p8,0x1.d7aca37eb05a1p2
+toDegrees,-0x1.6202c5199be34p2,-0x1.8b6f12d9e8ceap-4
+toDegrees,-0x1.5c58d80880982p5,-0x1.851b7d9eba78dp-1
+toDegrees,-0x1.43b8e1a23e479p7,-0x1.6999e5a23a02fp1
+toDegrees,-0x1.8815f8f42cea6p5,-0x1.b5f6cdab230d6p-1
+toDegrees,-0x1.4bf63f89b2173p7,-0x1.72ce151501a48p1
+toRadians,0x1.343b2ed481bd1p-6,0x1.13f162387c30ep0
+toRadians,0x1.62b1bc6a273c9p-7,0x1.3d89f0fad72e1p-1
+toRadians,-0x1.269dd1f61b4dfp-6,-0x1.07c11fe9ef09ap0
+toRadians,0x1.8f9413ec4afd4p-5,0x1.65b8a1590af12p1
+toRadians,-0x1.d5e34359a07fep-6,-0x1.a4aa56bfa319bp0
+toRadians,0x1.dccef5cda0302p-8,0x1.aadc71cf68e4p-2
+toRadians,-0x1.756bb6c6074bp-6,-0x1.4e4dbbcc2fa9fp0
+toRadians,0x1.bd04cff56f47ep-7,0x1.8e66cbb71fd56p-1
+toRadians,0x1.78fefa23b96fap-6,0x1.51811ea8e898bp0
+toRadians,0x1.0d4d232276716p-6,0x1.e22ea197722cep-1
+toRadians,-0x1.33d9fd2988496p-4,-0x1.139a5efe42b6ap2
+toRadians,-0x1.229982e2b8d7cp-5,-0x1.042888e04d436p1
+toRadians,-0x1.29c7dd4973314p-6,-0x1.0a965060eb912p0
+toRadians,0x1.20d720e76b068p-5,0x1.029554c15c57ap1
+toRadians,0x1.7f5bf73fdde9cp-7,0x1.5733775f2d25p-1
+toRadians,0x1.42170369d60b3p-4,0x1.2059910e0b436p2
+toRadians,0x1.a8b0ae7ecdabdp-3,0x1.7c33d0cf9cf15p3
+toRadians,0x1.630ea69bd5949p-5,0x1.3ddd1f7cf69b8p1
+toRadians,0x1.7f69b05ec6601p-3,0x1.573fc07b23f0dp3
+toRadians,0x1.af6c649a981abp-5,0x1.823af65afedeap1
+toRadians,-0x1.4a937400ee9d5p-5,-0x1.27f26f955178ap1
+toRadians,-0x1.b809620a4ff24p-4,-0x1.89f0f8d5f08f1p2
+toRadians,0x1.5fc99f56b4abap-7,0x1.3aefc6b5b91b7p-1
+toRadians,-0x1.517b699ec7bep-4,-0x1.2e21320a4ff91p2
+toRadians,-0x1.0bb8960d4d455p-7,-0x1.df5a490650c4ap-2
+toRadians,-0x1.ec1e137eb7753p-7,-0x1.b891050802839p-1
+toRadians,0x1.29829f741d254p-6,0x1.0a5853632a0e3p0
+toRadians,-0x1.4f91fde8cb341p-6,-0x1.2c6b0b115881dp0
+toRadians,0x1.33d962b6df19p-6,0x1.1399d4b969204p0
+toRadians,-0x1.c22d9a20d8453p-3,-0x1.93053a6c3aac9p3
+toRadians,0x1.8a562054567fdp-5,0x1.610740b5d01cbp1
+toRadians,-0x1.f38e2489f0cc6p-9,-0x1.bf39a0f24dfa5p-3
+toRadians,0x1.d8241c6f90ae7p-6,0x1.a6aec291de8e6p0
+toRadians,0x1.ea933e48ad7p-7,0x1.b72f8c019babcp-1
+toRadians,0x1.3a4dc8294ed8p-7,0x1.1961220e2d1bfp-1
+toRadians,-0x1.19ba22c2bb686p-7,-0x1.f86e2feb49188p-2
+toRadians,-0x1.85b38b279cecbp-9,-0x1.5ce0f7fbeaff5p-3
+toRadians,-0x1.eb71d9b818fd5p-7,-0x1.b7f6d5cfb47c3p-1
+toRadians,0x1.6ac5dcc337895p-3,0x1.44c56ca0989b1p3
+toRadians,-0x1.8d19564a6d62bp-5,-0x1.6380617bbb3d9p1
+toRadians,-0x1.241f2b58bedb9p-3,-0x1.05855fec5a98bp3
+toRadians,-0x1.6366121646645p-8,-0x1.3e2b62a393a8ap-2
+toRadians,0x1.6ecc94720253cp-6,0x1.48602bae2826p0
+toRadians,0x1.71d14914d9a1p-7,0x1.4b13eec2e34aep-1
+toRadians,-0x1.5a9a542f7ce34p-6,-0x1.364b856e7ad01p0
+toRadians,-0x1.0a0bba58bd01dp-7,-0x1.dc5a6ae50df52p-2
+toRadians,-0x1.8c8b2bf16c84ap-2,-0x1.63011b91a72d5p4
+toRadians,-0x1.d56110f9c4a6ap-7,-0x1.a435c7d87ec43p-1
+toRadians,0x1.96182610fd5dp-10,0x1.6b8df7081097cp-4
+toRadians,0x1.3d395c885fe78p-6,0x1.1bfe66ac6aca2p0
+toRadians,0x1.fa9331390851p-7,0x1.c5826e5d6a8fdp-1
+toRadians,-0x1.3a41e6900b66ep-7,-0x1.19567f131b0b3p-1
+toRadians,0x1.ef7b1d4585839p-6,0x1.bb93dc72c9319p0
+toRadians,0x1.62d84b7aedaa3p-5,0x1.3dac76046aacep1
+toRadians,-0x1.0f20042155341p-6,-0x1.e572931c5417bp-1
+toRadians,-0x1.690ea94f0a1b8p-6,-0x1.433c3b2cb5df1p0
+toRadians,-0x1.94c307b06c295p-8,-0x1.6a5c9464a575dp-2
+toRadians,-0x1.c7c50a49a546cp-9,-0x1.9806b7e00001p-3
+toRadians,0x1.73099f305d1fep-4,0x1.4c2b8cfb45c8bp2
+toRadians,-0x1.389be50a6fd97p-8,-0x1.17dcb26fb38ap-2
+toRadians,0x1.5fbc85728b899p-8,0x1.3ae40c2677db1p-2
+toRadians,0x1.ef94c7f3a2ecfp-6,0x1.bbaad6d3bf4d2p0
+toRadians,-0x1.8f2d697a05737p-9,-0x1.655cb8140865dp-3
+toRadians,0x1.b20508bdffb78p-5,0x1.848dfae3dca6ep1
+toRadians,-0x1.bdb35ca54ab81p-7,-0x1.8f030f8701c68p-1
+toRadians,0x1.0861b9ad91254p-5,0x1.d95fa9ae542c1p0
+toRadians,0x1.a76bd0ab65c66p-7,0x1.7b10fae457027p-1
+toRadians,0x1.54c5e8e9a7843p-7,0x1.3113702f0fc4fp-1
+toRadians,-0x1.13d8a20895e4fp0,-0x1.ede6983faab45p5
+toRadians,-0x1.cebc35c4a890bp-8,-0x1.9e43184cdea2ap-2
+toRadians,0x1.3d3e1280d3313p-4,0x1.1c029e507fabcp2
+toRadians,-0x1.5f6a1f54ab2a4p-7,-0x1.3a9a47b707798p-1
+toRadians,-0x1.3c0058e027e76p-6,-0x1.1ae62d156322p0
+toRadians,0x1.91a20082f74adp-3,0x1.678f764a36e11p3
+toRadians,0x1.5a7a88c4fde6ep-8,0x1.362f0ea5bddffp-2
+toRadians,-0x1.dd2d62c4677b5p-7,-0x1.ab30fa92aab8ep-1
+toRadians,0x1.c090beda0a1ebp-4,0x1.91939eabe933ep2
+toRadians,-0x1.fa64fbfece91ep-8,-0x1.c559104a2fc35p-2
+toRadians,0x1.03e06cf40987fp-6,0x1.d14eb0092067dp-1
+toRadians,-0x1.9e2d350067dbbp-8,-0x1.72ca4846014p-2
+toRadians,0x1.2b149a9831e4ep-2,0x1.0bc032a6985a2p4
+toRadians,-0x1.eb36b025b1424p-7,-0x1.b7c1deca5038ep-1
+toRadians,-0x1.581a480c8d362p-4,-0x1.340e855ef1af6p2
+toRadians,-0x1.0c3f652158269p-7,-0x1.e04ba8df602b9p-2
+toRadians,-0x1.309379cfc0976p-11,-0x1.10abb1f2f2834p-5
+toRadians,0x1.3f6a7aa234715p-7,0x1.1df4bd59b7a1fp-1
+toRadians,-0x1.65dd0dca04ae2p-7,-0x1.40604556bbc5ap-1
+toRadians,-0x1.69934495b8f4ap-6,-0x1.43b2f25b4c342p0
+toRadians,-0x1.f6766633423b6p-7,-0x1.c1d3ebf82f78ep-1
+toRadians,0x1.4c96adb0ee339p-6,0x1.29bfb0889a191p0
+toRadians,0x1.51c4cc005ef3ep-7,0x1.2e62e47bbc5f8p-1
+toRadians,-0x1.37fcc828121c6p-8,-0x1.174e407648858p-2
+toRadians,0x1.3c85a053a8dbfp-6,0x1.1b5d7e6798ac9p0
+toRadians,0x1.2fa1707ca7533p-6,0x1.0fd303496037ep0
+toRadians,-0x1.fd30ff4ab5bb4p-8,-0x1.c7da125a7e8cp-2
+toRadians,-0x1.07053d4647f61p-3,-0x1.d6efb37cbda3cp2
+toRadians,0x1.2e6539dacf422p-6,0x1.0eb7ec831448p0
+toRadians,0x1.90768a6c41a28p-6,0x1.66835ed1b0038p0
+toRadians,-0x1.3b5f769af4c14p-9,-0x1.1a5625378947dp-3
+toRadians,0x1.5e2305a747b1bp-7,0x1.397571d90c1e8p-1
+toRadians,-0x1.9684bb151928dp-6,-0x1.6bef2c36e0214p0
+toRadians,0x1.80aab10e1f8a3p-10,0x1.585f20e007884p-4
+toRadians,-0x1.73454254905c1p-9,-0x1.4c60f0d6580cep-3
+toRadians,-0x1.64e173018ac6bp-6,-0x1.3f7f05ce9fc63p0
+toRadians,0x1.6c33df8f50558p-9,0x1.460d18271bc01p-3
+toRadians,-0x1.a66398e8cab57p-11,-0x1.7a2470a132a52p-5
+toRadians,-0x1.4044a3024d4c3p-6,-0x1.1eb80b6a865f3p0
+toRadians,0x1.a5edecbd257d2p-7,0x1.79bb1811e0512p-1
+toRadians,0x1.2f63061aafa03p-9,0x1.0f9b22b1cf7b8p-3
+toRadians,0x1.57a84a0a48335p-6,0x1.33a878472947cp0
+toRadians,-0x1.1fbadf0bde297p-5,-0x1.0196d9ca7dd6dp1
+toRadians,0x1.0579eb2f75c14p-5,0x1.d42be1d80dafap0
+toRadians,0x1.4bb08a6dddaffp-10,0x1.28f1a8d929a18p-4
+toRadians,-0x1.785e5c8f3248bp-6,-0x1.50f15449acabep0
+toRadians,0x1.7c2e98ed7c20ap-6,0x1.545b4d0e37923p0
+toRadians,0x1.8afa8d5f6beb4p-7,0x1.619a745cb9468p-1
+toRadians,0x1.9ab81ca6e2142p-7,0x1.6fb1e76a3d452p-1
+toRadians,0x1.5abbd97d5f2dfp-8,0x1.366987d08a848p-2
+toRadians,0x1.10b1ed52fa65ap-5,0x1.e8423180e2757p0
+toRadians,0x1.1977488637e48p-7,0x1.f7f67cff2be2p-2
+toRadians,-0x1.ea464cd97d49ep-5,-0x1.b6eaa9f230e9ap1
+toRadians,0x1.b91c40b587a6dp-4,0x1.8ae70c5a81ab4p2
+toRadians,0x1.4437a94ee4aa7p-5,0x1.2241293012d19p1
+toRadians,0x1.f5efccce5b07bp-6,0x1.c15b6c1b274d9p0
+toRadians,-0x1.9f99237013c3ep-9,-0x1.741017345ad98p-3
+toRadians,-0x1.0973876df224ap-6,-0x1.db49e80f5e81ep-1
+toRadians,0x1.6fa164f8ba5d2p-6,0x1.491eb12f08f23p0
+toRadians,0x1.6c2759fa3c865p-9,0x1.4601e25dc1082p-3
+toRadians,-0x1.9e741ead7ac95p-9,-0x1.7309c44a173a5p-3
+toRadians,0x1.9030fa34f406dp-6,0x1.664518133618ep0
+toRadians,-0x1.efe26ef81c43dp-4,-0x1.bbf05b72f4d36p2
+toRadians,-0x1.f34430fc0f19fp-7,-0x1.bef76c89ad7e8p-1
+toRadians,-0x1.2cbb12850bd1p-6,-0x1.0d3a694a092f3p0
+toRadians,-0x1.6ca79b649b4dap-6,-0x1.4674b45e4bef9p0
+toRadians,-0x1.5ed33ec70db7ap-6,-0x1.3a1335377f47p0
+toRadians,0x1.4bb2ac4bfd435p0,0x1.28f39188d12e9p6
+toRadians,-0x1.1e73f51abbca9p-5,-0x1.00722ea8a6779p1
+toRadians,0x1.50359082fe9fap-6,0x1.2cfd7b2947624p0
+toRadians,-0x1.6890f9618d29ep-7,-0x1.42cbb5c946d7ep-1
+toRadians,-0x1.b7177f3ea7634p-7,-0x1.89186caa94425p-1
+toRadians,0x1.14ded07f7b65p-6,0x1.efbc076595c42p-1
+toRadians,0x1.94c88977ca0cap-6,0x1.6a61827e245e2p0
+toRadians,-0x1.f25873e1c75c3p-8,-0x1.be24613628b96p-2
+toRadians,-0x1.caa05a18ca625p-6,-0x1.9a956c2ee4594p0
+toRadians,-0x1.6674a31e63532p-7,-0x1.40e7f9ad2943fp-1
+toRadians,0x1.5ebd1a81b95b7p-6,0x1.39ff62b7845c3p0
+toRadians,0x1.7770bfa4cac45p-8,0x1.501c9b691eb28p-2
+toRadians,0x1.52c145c51ab79p0,0x1.2f44eba454717p6
+toRadians,-0x1.5082c8921deefp-5,-0x1.2d429c72b1d75p1
+toRadians,0x1.288a3adfc8e7ap-5,0x1.0979f3ee43321p1
+toRadians,-0x1.ef75b508090c5p-8,-0x1.bb8f05364e233p-2
+toRadians,0x1.365709f9e92dbp-5,0x1.15d4b01c6f66fp1
+toRadians,0x1.bd29cf8766e9fp-8,0x1.8e87eb1b1cb6ap-2
+toRadians,0x1.5705e9472736dp-10,0x1.331719fc9f227p-4
+toRadians,-0x1.c0f0760371a15p-5,-0x1.91e94f0aeb6fdp1
+toRadians,0x1.aa4b9d7189cd6p-11,0x1.7da3b3ce92d0bp-5
+toRadians,-0x1.e36f3239795c7p-7,-0x1.b0cafe786941p-1
+toRadians,-0x1.5d453f9711567p-6,-0x1.38aee7103062ap0
+toRadians,0x1.4f5935250958dp-9,0x1.2c3835144a6c6p-3
+toRadians,-0x1.fc315cc3236d5p-5,-0x1.c6f5372783487p1
+toRadians,-0x1.5f6f0db8815dcp-11,-0x1.3a9eb1dd80ae8p-5
+toRadians,0x1.044ced10f50cep-6,0x1.d210f4f97b4fap-1
+toRadians,-0x1.0820c249570a6p-12,-0x1.d8eb574a001cap-7
+toRadians,0x1.c0dce341827e4p-7,0x1.91d7c92de11e9p-1
+toRadians,-0x1.54c0758b47cf8p-5,-0x1.310e8efc1fc1dp1
+toRadians,-0x1.0c22f069d37e6p-6,-0x1.e018b5a31fb2cp-1
+toRadians,-0x1.0d44d90e1098cp-6,-0x1.e21fca05c552fp-1
+toRadians,0x1.aa370725bfc19p-6,0x1.7d914597b0f93p0
+toRadians,0x1.5dae1ab6a26cap-8,0x1.390cc646e30c2p-2
+toRadians,-0x1.93d8aca9afc4cp-6,-0x1.698ac60d72cfap0
+toRadians,0x1.dde50e06e847bp-8,0x1.abd568673b34cp-2
+toRadians,0x1.85367605681f8p-8,0x1.5c70fd2cabf94p-2
+toRadians,0x1.0f398ad1f05d4p-6,0x1.e5a0476d86f65p-1
+toRadians,-0x1.d61f59195aa6cp-7,-0x1.a4e02134d1a6bp-1
+toRadians,-0x1.2ea0ffdaa0e6p-6,-0x1.0eed6f92fd525p0
+toRadians,-0x1.ed05911e835b4p-7,-0x1.b96042cbd3729p-1
+toRadians,0x1.2cd0b41a46717p-3,0x1.0d4dc6ca8eaa8p3
+toRadians,0x1.381d20fe74a4p-6,0x1.176b35da6d972p0
+toRadians,-0x1.135812197a196p-5,-0x1.ed0067a8591e4p0
+toRadians,0x1.9487e02c71b95p-4,0x1.6a279f36895cap2
+toRadians,0x1.2f1b98fbb5e38p-7,0x1.0f5b3100c4226p-1
+toRadians,-0x1.df126097b8ce9p-10,-0x1.ace32a703c8p-4
+toRadians,0x1.27602746d31p-5,0x1.086f19d122d5p1
+toRadians,-0x1.6f00c2e92cd4ep-7,-0x1.488ee2ccee45dp-1
+toRadians,-0x1.6d6cad1da49f1p-8,-0x1.4725214f128bcp-2
+toRadians,0x1.53853b6e52504p-6,0x1.2ff45a46f0239p0
+toRadians,-0x1.35bedb84f10a2p-6,-0x1.154c72afce441p0
+toRadians,0x1.e5b425177b774p-8,0x1.b2d3161ad8a1fp-2
+toRadians,-0x1.0bfd2695d0ed9p-8,-0x1.dfd50cb6eb642p-3
+toRadians,0x1.9e42202419179p-7,0x1.72dd02718e33ep-1
+toRadians,0x1.91ed5a574b502p-7,0x1.67d2eb7176ee9p-1
+toRadians,0x1.88624a4753cb9p-5,0x1.5f47c6b4bedb7p1
+toRadians,-0x1.88c9a0d956ca6p-10,-0x1.5fa44a11aabe3p-4
+toRadians,-0x1.a5a8e50293634p-8,-0x1.797d4b83f869p-2
+toRadians,-0x1.aee96588d5d7ap-6,-0x1.81c5b0333bb09p0
+toRadians,-0x1.a0bb132c02b9p-7,-0x1.7513a7bf2c3eep-1
+toRadians,-0x1.159284ff767c1p-2,-0x1.f0fdca230f3f5p3
+toRadians,0x1.6ec5baab9dfccp-7,0x1.485a099e8a8a4p-1
+toRadians,-0x1.479fe44ef6b39p-4,-0x1.254e05afbfe62p2
+toRadians,0x1.0ce113f6e801dp-4,0x1.e16d26e044eb6p1
+ulp,0x1.0p-52,-0x1.9369810dd84a3p0
+ulp,0x1.0p-54,-0x1.9f2928d31e01cp-2
+ulp,0x1.0p-51,-0x1.73ea1caeccadfp1
+ulp,0x1.0p-56,-0x1.b86c6f1a71af3p-4
+ulp,0x1.0p-52,-0x1.a6ef99791510fp0
+ulp,0x1.0p-52,-0x1.5d387a9331d4bp0
+ulp,0x1.0p-51,-0x1.1e9fa73b0f17ep1
+ulp,0x1.0p-53,0x1.5ae973c9b8796p-1
+ulp,0x1.0p-52,-0x1.0442e3e3b3b79p0
+ulp,0x1.0p-53,0x1.54c946e25ac81p-1
+ulp,0x1.0p-50,-0x1.823ca7a97f04fp2
+ulp,0x1.0p-52,-0x1.2224e7e88298ep0
+ulp,0x1.0p-54,-0x1.fea5f17ff5016p-2
+ulp,0x1.0p-54,-0x1.871996754d049p-2
+ulp,0x1.0p-52,-0x1.907690c67abfbp0
+ulp,0x1.0p-53,0x1.b27d04e53486bp-1
+ulp,0x1.0p-50,-0x1.9f83f235455adp2
+ulp,0x1.0p-55,-0x1.27db0f3453088p-3
+ulp,0x1.0p-53,0x1.dcb0659fc998p-1
+ulp,0x1.0p-55,0x1.fb07cf43a2d89p-3
+ulp,0x1.0p-54,-0x1.9edeb774425ebp-2
+ulp,0x1.0p-52,0x1.1555de3dd020dp0
+ulp,0x1.0p-55,0x1.88207d030a31ep-3
+ulp,0x1.0p-55,0x1.a43d08b26be4ap-3
+ulp,0x1.0p-52,-0x1.15f5854c2bcd5p0
+ulp,0x1.0p-51,0x1.1a7ea8c3d6b39p1
+ulp,0x1.0p-51,-0x1.6f1f146ede7c2p1
+ulp,0x1.0p-51,0x1.feb1e4c4d0e41p1
+ulp,0x1.0p-53,-0x1.acf03f6287edfp-1
+ulp,0x1.0p-52,0x1.4fe731c91c69cp0
+ulp,0x1.0p-50,-0x1.e07be31b55062p2
+ulp,0x1.0p-55,0x1.dc1cf3e87e286p-3
+ulp,0x1.0p-53,-0x1.aaceaee575b18p-1
+ulp,0x1.0p-52,0x1.05f4ba3309817p0
+ulp,0x1.0p-55,-0x1.8865f997482aep-3
+ulp,0x1.0p-51,-0x1.3fefc64092de6p1
+ulp,0x1.0p-51,0x1.2719b1d2899ap1
+ulp,0x1.0p-50,-0x1.08cecb8ac651fp2
+ulp,0x1.0p-50,-0x1.2685e7840932dp2
+ulp,0x1.0p-52,-0x1.d0bd1fa84868ep0
+ulp,0x1.0p-50,0x1.bb4733e2cd111p2
+ulp,0x1.0p-53,0x1.ad427a13426a2p-1
+ulp,0x1.0p-54,0x1.5f1c41010e9dep-2
+ulp,0x1.0p-55,-0x1.2fc9edef312b5p-3
+ulp,0x1.0p-51,0x1.11242db5bd479p1
+ulp,0x1.0p-50,0x1.024f116156aeap2
+ulp,0x1.0p-52,-0x1.2f61c2afb9797p0
+ulp,0x1.0p-52,0x1.074aab47fa7bap0
+ulp,0x1.0p-52,-0x1.1e23ee7e724fp0
+ulp,0x1.0p-53,-0x1.10d1095c94562p-1
+ulp,0x1.0p-53,0x1.f797fb150a518p-1
+ulp,0x1.0p-52,-0x1.6ba40f9142b55p0
+ulp,0x1.0p-57,0x1.f6be0e1131cd9p-5
+ulp,0x1.0p-51,0x1.60936f7891dcbp1
+ulp,0x1.0p-52,0x1.76daad2da2fe2p0
+ulp,0x1.0p-52,0x1.3176325cb1721p0
+ulp,0x1.0p-55,0x1.35bfdee8919fdp-3
+ulp,0x1.0p-53,-0x1.271b0dd5cae1ap-1
+ulp,0x1.0p-56,0x1.eeb504b6dfd4ap-4
+ulp,0x1.0p-54,-0x1.62f2ea303123cp-2
+ulp,0x1.0p-53,-0x1.0b9b74d01a53p-1
+ulp,0x1.0p-54,-0x1.a25637868c8afp-2
+ulp,0x1.0p-51,0x1.4937474239c4cp1
+ulp,0x1.0p-53,-0x1.24e1d894ebd5bp-1
+ulp,0x1.0p-55,-0x1.aa1959b2ee2e7p-3
+ulp,0x1.0p-53,-0x1.519d5013ccc5ap-1
+ulp,0x1.0p-56,0x1.31cd2f93f176bp-4
+ulp,0x1.0p-53,0x1.a774c37c3fe41p-1
+ulp,0x1.0p-52,-0x1.8fd2aa3d25cf2p0
+ulp,0x1.0p-52,-0x1.0dd5221361bbfp0
+ulp,0x1.0p-54,-0x1.8e228ae1ed28ap-2
+ulp,0x1.0p-54,0x1.31010af798345p-2
+ulp,0x1.0p-55,0x1.fc20dfe30e64dp-3
+ulp,0x1.0p-49,-0x1.c2cbf5304bf0fp3
+ulp,0x1.0p-53,-0x1.599ea9e345bc3p-1
+ulp,0x1.0p-50,-0x1.5de71437e6098p2
+ulp,0x1.0p-51,-0x1.e0b06deed431ep1
+ulp,0x1.0p-53,0x1.a1c4c4cfd06e5p-1
+ulp,0x1.0p-52,0x1.af15d99cd9357p0
+ulp,0x1.0p-49,-0x1.c07b831808071p3
+ulp,0x1.0p-53,-0x1.24e1dfa1b04e1p-1
+ulp,0x1.0p-52,-0x1.0523d74000559p0
+ulp,0x1.0p-53,0x1.98227ece1cdebp-1
+ulp,0x1.0p-52,0x1.031b64f8b50bp0
+ulp,0x1.0p-50,-0x1.13e9f65198dc9p2
+ulp,0x1.0p-51,0x1.8101df83d5ff7p1
+ulp,0x1.0p-51,-0x1.5a449b9d853fbp1
+ulp,0x1.0p-52,-0x1.63b66f63b7592p0
+ulp,0x1.0p-50,-0x1.75d152f3855e4p2
+ulp,0x1.0p-52,-0x1.60b419eb80a92p0
+ulp,0x1.0p-54,0x1.0ab24d9767072p-2
+ulp,0x1.0p-56,-0x1.677f82863e19bp-4
+ulp,0x1.0p-53,-0x1.c1d83c1e436a5p-1
+ulp,0x1.0p-53,-0x1.8a192f285be71p-1
+ulp,0x1.0p-52,-0x1.52c3011b6fe09p0
+ulp,0x1.0p-49,-0x1.3076869da11dbp3
+ulp,0x1.0p-47,-0x1.62753b9029688p5
+ulp,0x1.0p-50,0x1.6d859d4adc109p2
+ulp,0x1.0p-53,0x1.e2598b488484p-1
+ulp,0x1.0p-56,-0x1.b89a9bb75880dp-4
+ulp,0x1.0p-57,-0x1.344e647fb82dbp-5
+ulp,0x1.0p-53,-0x1.3d3c417ea51c6p-1
+ulp,0x1.0p-54,0x1.f0b8097570173p-2
+ulp,0x1.0p-52,0x1.4e14e33ecdf99p0
+ulp,0x1.0p-51,0x1.1391e3bde920bp1
+ulp,0x1.0p-54,0x1.24809ab102362p-2
+ulp,0x1.0p-53,0x1.4bc9511d85d9cp-1
+ulp,0x1.0p-52,-0x1.09a22fbedba27p0
+ulp,0x1.0p-50,-0x1.a4d703650a565p2
+ulp,0x1.0p-51,-0x1.feb1e72fa3007p1
+ulp,0x1.0p-51,0x1.b01b70b420dc8p1
+ulp,0x1.0p-54,0x1.2773164ad9322p-2
+ulp,0x1.0p-52,-0x1.7502d121daceap0
+ulp,0x1.0p-53,-0x1.eae29ee9c5ef1p-1
+ulp,0x1.0p-50,-0x1.483240344459bp2
+ulp,0x1.0p-55,0x1.c0103c2efe682p-3
+ulp,0x1.0p-54,0x1.b37df0c13405p-2
+ulp,0x1.0p-53,0x1.1e5fccb8bb648p-1
+ulp,0x1.0p-52,-0x1.d6fce3c72d00dp0
+ulp,0x1.0p-52,0x1.bbbdbba0acfe1p0
+ulp,0x1.0p-50,0x1.4879b63b323bap2
+ulp,0x1.0p-51,0x1.2c7eb76edde01p1
+ulp,0x1.0p-53,-0x1.7cb31a5805664p-1
+ulp,0x1.0p-54,0x1.dff05a29b1a26p-2
+ulp,0x1.0p-51,-0x1.51dbe032b9c06p1
+ulp,0x1.0p-53,0x1.534efa559f66fp-1
+ulp,0x1.0p-53,0x1.2a916c337b64ap-1
+ulp,0x1.0p-52,-0x1.1adcf04b3064bp0
+ulp,0x1.0p-53,-0x1.568dee10a8ad9p-1
+ulp,0x1.0p-53,0x1.5442044e7c1c7p-1
+ulp,0x1.0p-46,-0x1.31ab0c728438fp6
+ulp,0x1.0p-51,-0x1.7259325752162p1
+ulp,0x1.0p-57,-0x1.1a30486920f7bp-5
+ulp,0x1.0p-51,-0x1.b16030f80babp1
+ulp,0x1.0p-54,0x1.2614558cba404p-2
+ulp,0x1.0p-51,-0x1.7d5d8217e0831p1
+ulp,0x1.0p-53,-0x1.a0f4358bb963p-1
+ulp,0x1.0p-51,-0x1.a088924c7d188p1
+ulp,0x1.0p-55,-0x1.e7f3eef54f87ap-3
+ulp,0x1.0p-50,-0x1.fe3cd0e46db73p2
+ulp,0x1.0p-54,-0x1.39983772d5ab8p-2
+ulp,0x1.0p-57,0x1.dd29df7b3f96ap-5
+ulp,0x1.0p-52,0x1.3dffeec0811f1p0
+ulp,0x1.0p-52,-0x1.d2bad5256de4p0
+ulp,0x1.0p-48,0x1.5fb78d86618a6p4
+ulp,0x1.0p-49,-0x1.5ae03318632e8p3
+ulp,0x1.0p-56,-0x1.bde7eaeb40779p-4
+ulp,0x1.0p-52,0x1.f1974828ea84p0
+ulp,0x1.0p-53,0x1.80b6f42d2bdefp-1
+ulp,0x1.0p-55,0x1.b63403d4a8bd4p-3
+ulp,0x1.0p-53,0x1.601d62621a398p-1
+ulp,0x1.0p-56,-0x1.8da30ebf2699ep-4
+ulp,0x1.0p-53,0x1.52e994b0bf5fap-1
+ulp,0x1.0p-44,0x1.68b8d3d4caec1p8
+ulp,0x1.0p-52,0x1.290206f80c1bbp0
+ulp,0x1.0p-47,-0x1.31f2eb6da1f32p5
+ulp,0x1.0p-48,0x1.2eb942192a685p4
+ulp,0x1.0p-51,0x1.4985c432f4e67p1
+ulp,0x1.0p-57,-0x1.c41bd03336427p-5
+ulp,0x1.0p-56,0x1.e05e5b77d153cp-4
+ulp,0x1.0p-50,0x1.e8e2441e1dd1bp2
+ulp,0x1.0p-51,-0x1.1d17c19fb812bp1
+ulp,0x1.0p-51,0x1.bd7d2fbe8ab71p1
+ulp,0x1.0p-53,0x1.67be4b958620dp-1
+ulp,0x1.0p-52,-0x1.3f3300c19df5bp0
+ulp,0x1.0p-52,-0x1.d474a6d231974p0
+ulp,0x1.0p-51,-0x1.b2ffcba471472p1
+ulp,0x1.0p-51,0x1.a50dfd97235aep1
+ulp,0x1.0p-52,-0x1.565eeb5a460aap0
+ulp,0x1.0p-47,0x1.ce6d570b266b2p5
+ulp,0x1.0p-52,0x1.8d85cece5190cp0
+ulp,0x1.0p-46,-0x1.1b29a95d8973p6
+ulp,0x1.0p-52,0x1.44e58ae4e0f71p0
+ulp,0x1.0p-55,-0x1.09d04981b12a3p-3
+ulp,0x1.0p-52,0x1.e135d7eb33b54p0
+ulp,0x1.0p-54,-0x1.24f0a8aa287bep-2
+ulp,0x1.0p-52,-0x1.0cca58d230b3cp0
+ulp,0x1.0p-52,-0x1.0bbdc09c44261p0
+ulp,0x1.0p-53,0x1.cc27aac8ccd2bp-1
+ulp,0x1.0p-55,0x1.849ac758f5bbap-3
+ulp,0x1.0p-52,-0x1.716751ce9b3p0
+ulp,0x1.0p-52,0x1.06d1aadc5d03fp0
+ulp,0x1.0p-51,-0x1.37c7c20ede5dp1
+ulp,0x1.0p-52,0x1.af0bc6aa67949p0
+ulp,0x1.0p-52,0x1.13e3c05223dd8p0
+ulp,0x1.0p-53,-0x1.fcfccf983f742p-1
+ulp,0x1.0p-52,0x1.2109216556897p0
+ulp,0x1.0p-58,-0x1.cf9910c8f7fb7p-6
+ulp,0x1.0p-54,-0x1.710efab54e94bp-2
+ulp,0x1.0p-52,0x1.1b38ea6942004p0
+ulp,0x1.0p-52,0x1.ed158cf170328p0
+ulp,0x1.0p-51,0x1.b52c5e8111303p1
+ulp,0x1.0p-49,-0x1.2e7f6bbcee20ep3
+ulp,0x1.0p-54,0x1.8a5fd3b9ca19ap-2
+ulp,0x1.0p-52,0x1.a6c899c30c922p0
+ulp,0x1.0p-53,0x1.afeba7ea55248p-1
+ulp,0x1.0p-53,-0x1.8ea9b89dffed6p-1
+ulp,0x1.0p-54,-0x1.efd893fe08d6fp-2
+ulp,0x1.0p-58,0x1.4b9af1ea9f96fp-6
+ulp,0x1.0p-46,0x1.1a46e5c8b221p6
diff --git a/luni/src/test/resources/math_tests.csv b/luni/src/test/resources/math_tests.csv
new file mode 100644
index 0000000..3393400
--- /dev/null
+++ b/luni/src/test/resources/math_tests.csv
@@ -0,0 +1,5199 @@
+#These tests come from the intel tests in bionic
+tan,0x1.5078cebff9c73p-5,0x1.50486b2f87014p-5
+tan,-0x1.5078cebff9c73p-5,-0x1.50486b2f87014p-5
+tan,0x1.5389e6df41979p-4,0x1.52c39ef070cadp-4
+tan,-0x1.5389e6df41979p-4,-0x1.52c39ef070cadp-4
+tan,0x1.a933fe176b375p-3,0x1.a33f32ac5ceb5p-3
+tan,-0x1.a933fe176b375p-3,-0x1.a33f32ac5ceb5p-3
+tan,0x1.fac71cd34eea7p-2,0x1.d696bfa988db9p-2
+tan,-0x1.fac71cd34eea7p-2,-0x1.d696bfa988db9p-2
+tan,0x1.7ba49f739829fp-1,0x1.46ac372243536p-1
+tan,-0x1.7ba49f739829fp-1,-0x1.46ac372243536p-1
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x1.8f048832144b7p0,-0x1.0018p0
+tan,0x1.8f048832144b7p0,0x1.0018p0
+tan,-0x1.8e884b24313afp0,-0x1.090cca18a5565p2
+tan,0x1.8e884b24313afp0,0x1.090cca18a5565p2
+tan,-0x1.ca18654b35697p0,-0x1.0faa7650df144p0
+tan,0x1.ca18654b35697p0,0x1.0faa7650df144p0
+tan,-0x1.e52fafa22ef14p-2,-0x1.180000000004p5
+tan,0x1.e52fafa22ef14p-2,0x1.180000000004p5
+tan,-0x1.a3ca421dc30f2p-3,-0x1.4000527aca388p99
+tan,0x1.a3ca421dc30f2p-3,0x1.4000527aca388p99
+tan,0x1.1f3b7d1978609p1,-0x1.486c3634751ecp2
+tan,-0x1.1f3b7d1978609p1,0x1.486c3634751ecp2
+tan,-0x1.7eb873343fa7ap-1,-0x1.48a71800b5713p-1
+tan,0x1.7eb873343fa7ap-1,0x1.48a71800b5713p-1
+tan,0x1.be071572f64e8p-1,-0x1.49af0314eea3cp299
+tan,-0x1.be071572f64e8p-1,0x1.49af0314eea3cp299
+tan,0x1.ffbb2647f57a2p-1,-0x1.5fe00c814ffd6p2
+tan,-0x1.ffbb2647f57a2p-1,0x1.5fe00c814ffd6p2
+tan,-0x1.a8eb142b2f428p-1,-0x1.62ac241f79439p-1
+tan,0x1.a8eb142b2f428p-1,0x1.62ac241f79439p-1
+tan,-0x1.7d1d3559ddac9p-4,-0x1.7c051b476ca8dp-4
+tan,0x1.7d1d3559ddac9p-4,0x1.7c051b476ca8dp-4
+tan,-0x1.0e1d0305b7b72p2,-0x1.7e43c880074c6p996
+tan,0x1.0e1d0305b7b72p2,0x1.7e43c880074c6p996
+tan,-0x1.812bdfe0246bcp-4,-0x1.800ac363398c4p-4
+tan,0x1.812bdfe0246bcp-4,0x1.800ac363398c4p-4
+tan,-0x1.850e5544b0c79p-4,-0x1.83e46aedbff36p-4
+tan,0x1.850e5544b0c79p-4,0x1.83e46aedbff36p-4
+tan,0x1.e6b5d91bba934p-2,-0x1.83ecf42e9265ap3
+tan,-0x1.e6b5d91bba934p-2,0x1.83ecf42e9265ap3
+tan,-0x1.f3688bc2594e2p-1,-0x1.8bcp-1
+tan,0x1.f3688bc2594e2p-1,0x1.8bcp-1
+tan,0x1.ec0d0facdd08bp-2,-0x1.8d2ffffffffd1p9
+tan,-0x1.ec0d0facdd08bp-2,0x1.8d2ffffffffd1p9
+tan,0x1.ec0336d539259p-2,-0x1.8d3000fffffd1p9
+tan,-0x1.ec0336d539259p-2,0x1.8d3000fffffd1p9
+tan,-0x1.f8093a017021fp-1,-0x1.baeee6f6fa538p6
+tan,0x1.f8093a017021fp-1,0x1.baeee6f6fa538p6
+tan,0x1.deaf34994b7e7p3,-0x1.c6867e07455eap3
+tan,-0x1.deaf34994b7e7p3,0x1.c6867e07455eap3
+tan,-0x1.f29aa87d4e1dep-1,-0x1.d27ffffffep7
+tan,0x1.f29aa87d4e1dep-1,0x1.d27ffffffep7
+tan,0x1.762fb47a1925ap-3,-0x1.f0df38029c9efp3
+tan,-0x1.762fb47a1925ap-3,0x1.f0df38029c9efp3
+tan,-0x1.8eb23ef2126bcp0,-0x1.fffffc0000fffp-1
+tan,0x1.8eb23ef2126bcp0,0x1.fffffc0000fffp-1
+tan,-0x1.d299d285bf018p-2,-0x1.ffffffffffffcp1023
+tan,0x1.d299d285bf018p-2,0x1.ffffffffffffcp1023
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,-0x1.82bee572e2ac9p-6,0x1.0p64
+tan,0x1.82bee572e2ac9p-6,-0x1.0p64
+tan,0x1.f53a8d05afcf7p4,0x1.0000000000001p51
+tan,-0x1.f53a8d05afcf7p4,-0x1.0000000000001p51
+tan,-0x1.6b371df5980cep-1,0x1.0000000000001p1017
+tan,0x1.6b371df5980cep-1,-0x1.0000000000001p1017
+tan,-0x1.b32e78f49a0c8p2,0x1.0000000000003p3
+tan,0x1.b32e78f49a0c8p2,-0x1.0000000000003p3
+tan,0x1.98afbd24264bcp-1,0x1.0000000000003p21
+tan,-0x1.98afbd24264bcp-1,-0x1.0000000000003p21
+tan,0x1.b667a2abe36c3p0,0x1.0000000000003p511
+tan,-0x1.b667a2abe36c3p0,-0x1.0000000000003p511
+tan,0x1.204c26a427862p-2,0x1.0000000000003p716
+tan,-0x1.204c26a427862p-2,-0x1.0000000000003p716
+tan,0x1.91c8f2938262dp4,0x1.0000000000007p8
+tan,-0x1.91c8f2938262dp4,-0x1.0000000000007p8
+tan,-0x1.27f7f0880032p-2,0x1.0000000000038p380
+tan,0x1.27f7f0880032p-2,-0x1.0000000000038p380
+tan,-0x1.d6890cc32711dp-3,0x1.0000000000118p380
+tan,0x1.d6890cc32711dp-3,-0x1.0000000000118p380
+tan,0x1.9af0e6f72f912p-3,0x1.0000000000908p500
+tan,-0x1.9af0e6f72f912p-3,-0x1.0000000000908p500
+tan,0x1.17b4f5bf44098p-1,0x1.000000000cp-1
+tan,-0x1.17b4f5bf44098p-1,-0x1.000000000cp-1
+tan,-0x1.17eb22e4dba73p0,0x1.00000001cp40
+tan,0x1.17eb22e4dba73p0,-0x1.00000001cp40
+tan,0x1.f6f03ce5690a7p-1,0x1.0000001p250
+tan,-0x1.f6f03ce5690a7p-1,-0x1.0000001p250
+tan,0x1.e23b78282a75dp-1,0x1.000000988p27
+tan,-0x1.e23b78282a75dp-1,-0x1.000000988p27
+tan,-0x1.981b657e1ca27p-3,0x1.00000cp429
+tan,0x1.981b657e1ca27p-3,-0x1.00000cp429
+tan,-0x1.455a2184f4c3ep-1,0x1.00000fcp1000
+tan,0x1.455a2184f4c3ep-1,-0x1.00000fcp1000
+tan,0x1.8ee66962f210cp0,0x1.000f371b7a006p0
+tan,-0x1.8ee66962f210cp0,-0x1.000f371b7a006p0
+tan,-0x1.ecd75cf6d4664p-3,0x1.001p15
+tan,0x1.ecd75cf6d4664p-3,-0x1.001p15
+tan,0x1.17d42033277ccp-1,0x1.0017ffffffffdp-1
+tan,-0x1.17d42033277ccp-1,-0x1.0017ffffffffdp-1
+tan,0x1.8f048832144b7p0,0x1.0018p0
+tan,-0x1.8f048832144b7p0,-0x1.0018p0
+tan,-0x1.18273cc3e7639p-2,0x1.001fffep500
+tan,0x1.18273cc3e7639p-2,-0x1.001fffep500
+tan,-0x1.d8f90cad30547p-2,0x1.018p40
+tan,0x1.d8f90cad30547p-2,-0x1.018p40
+tan,0x1.b079ea0d14a4ap-2,0x1.01b8a484ac0b6p4
+tan,-0x1.b079ea0d14a4ap-2,-0x1.01b8a484ac0b6p4
+tan,-0x1.a40c262f6ab9ap-1,0x1.026ac0ef32d4p28
+tan,0x1.a40c262f6ab9ap-1,-0x1.026ac0ef32d4p28
+tan,0x1.03b8c1f329665p-4,0x1.035fdcd08a596p-4
+tan,-0x1.03b8c1f329665p-4,-0x1.035fdcd08a596p-4
+tan,0x1.044979d134ed9p-4,0x1.03fp-4
+tan,-0x1.044979d134ed9p-4,-0x1.03fp-4
+tan,-0x1.e717de7da2ce8p0,0x1.07p1
+tan,0x1.e717de7da2ce8p0,-0x1.07p1
+tan,-0x1.8c896f607ff52p-1,0x1.07p30
+tan,0x1.8c896f607ff52p-1,-0x1.07p30
+tan,0x1.fffffffff5d84p-1,0x1.07e4cef4cbb0ep4
+tan,-0x1.fffffffff5d84p-1,-0x1.07e4cef4cbb0ep4
+tan,0x1.b476d32c1b745p0,0x1.0a53a78b13ab2p0
+tan,-0x1.b476d32c1b745p0,-0x1.0a53a78b13ab2p0
+tan,0x1.f2df7c02d20cep-1,0x1.0afbc268b9848p6
+tan,-0x1.f2df7c02d20cep-1,-0x1.0afbc268b9848p6
+tan,-0x1.b571af562f08ap0,0x1.0cd5d435bea6dp1
+tan,0x1.b571af562f08ap0,-0x1.0cd5d435bea6dp1
+tan,-0x1.ac73d2920a795p0,0x1.0ep1
+tan,0x1.ac73d2920a795p0,-0x1.0ep1
+tan,-0x1.126dce8ac7c81p-1,0x1.1086210842108p5
+tan,0x1.126dce8ac7c81p-1,-0x1.1086210842108p5
+tan,-0x1.9680c02601047p0,0x1.11p1
+tan,0x1.9680c02601047p0,-0x1.11p1
+tan,0x1.d1e716934469bp0,0x1.118p0
+tan,-0x1.d1e716934469bp0,-0x1.118p0
+tan,-0x1.6aa7310143084p-1,0x1.19df389f39e0ap3
+tan,0x1.6aa7310143084p-1,-0x1.19df389f39e0ap3
+tan,0x1.cb9a99227bdc9p1,0x1.1c3598211013ap2
+tan,-0x1.cb9a99227bdc9p1,-0x1.1c3598211013ap2
+tan,-0x1.bc109c3e61724p7,0x1.1d65aa4224c3p118
+tan,0x1.bc109c3e61724p7,-0x1.1d65aa4224c3p118
+tan,-0x1.09b393f48b2c6p-1,0x1.1e4658272dc6fp3
+tan,0x1.09b393f48b2c6p-1,-0x1.1e4658272dc6fp3
+tan,0x1.200000000007ap-22,0x1.2p-22
+tan,-0x1.200000000007ap-22,-0x1.2p-22
+tan,-0x1.02a335b00707ap0,0x1.2127409620cacp95
+tan,0x1.02a335b00707ap0,-0x1.2127409620cacp95
+tan,0x1.2508b9c1273acp-4,0x1.2489224892248p-4
+tan,-0x1.2508b9c1273acp-4,-0x1.2489224892248p-4
+tan,0x1.fded5f53d132dp2,0x1.2a52d119da061p237
+tan,-0x1.fded5f53d132dp2,-0x1.2a52d119da061p237
+tan,0x1.2de56a6ef9c5ep-4,0x1.2d59ebab8dae4p-4
+tan,-0x1.2de56a6ef9c5ep-4,-0x1.2d59ebab8dae4p-4
+tan,0x1.31665eb191fbbp-4,0x1.30d5f8e54b6d8p-4
+tan,-0x1.31665eb191fbbp-4,-0x1.30d5f8e54b6d8p-4
+tan,0x1.3cc1d4d28bfd2p-2,0x1.333275d63ec5p-2
+tan,-0x1.3cc1d4d28bfd2p-2,-0x1.333275d63ec5p-2
+tan,0x1.3cc237c0c7dccp-2,0x1.3332d020b6da9p-2
+tan,-0x1.3cc237c0c7dccp-2,-0x1.3332d020b6da9p-2
+tan,0x1.5e472e16999dfp-1,0x1.333333401e66bp-1
+tan,-0x1.5e472e16999dfp-1,-0x1.333333401e66bp-1
+tan,0x1.b5ed1c2080a98p-1,0x1.38f137cb9dbfcp9
+tan,-0x1.b5ed1c2080a98p-1,-0x1.38f137cb9dbfcp9
+tan,0x1.01aa22e2133d4p1,0x1.39a383f3fa003p85
+tan,-0x1.01aa22e2133d4p1,-0x1.39a383f3fa003p85
+tan,0x1.ffffffffff582p-1,0x1.3a28c59d54311p4
+tan,-0x1.ffffffffff582p-1,-0x1.3a28c59d54311p4
+tan,0x1.7166689d4803fp-1,0x1.4000000003fffp-1
+tan,-0x1.7166689d4803fp-1,-0x1.4000000003fffp-1
+tan,-0x1.ff7d27b37eba1p-1,0x1.40724a44714cfp5
+tan,0x1.ff7d27b37eba1p-1,-0x1.40724a44714cfp5
+tan,0x1.453a7d29dadadp-4,0x1.448c2d6e1e1afp-4
+tan,-0x1.453a7d29dadadp-4,-0x1.448c2d6e1e1afp-4
+tan,-0x1.a50f7601413e5p0,0x1.478fc08p43
+tan,0x1.a50f7601413e5p0,-0x1.478fc08p43
+tan,-0x1.a9991acb7636cp-4,0x1.4e93bee72b565p62
+tan,0x1.a9991acb7636cp-4,-0x1.4e93bee72b565p62
+tan,0x1.2952396945948p1,0x1.4f0f308p488
+tan,-0x1.2952396945948p1,-0x1.4f0f308p488
+tan,0x1.5078cebff9c73p-5,0x1.50486b2f87014p-5
+tan,-0x1.5078cebff9c73p-5,-0x1.50486b2f87014p-5
+tan,-0x1.1c929b6ede9eep-1,0x1.5130d552f1036p1
+tan,0x1.1c929b6ede9eep-1,-0x1.5130d552f1036p1
+tan,0x1.2ab3189e2d4aep1,0x1.52f00ep793
+tan,-0x1.2ab3189e2d4aep1,-0x1.52f00ep793
+tan,-0x1.7d2e63fb98891p0,0x1.5371684e5fb34p2
+tan,0x1.7d2e63fb98891p0,-0x1.5371684e5fb34p2
+tan,-0x1.f9f4f0da4de54p-1,0x1.54ef2208956p239
+tan,0x1.f9f4f0da4de54p-1,-0x1.54ef2208956p239
+tan,0x1.1483073142e6p2,0x1.57e590af09014p0
+tan,-0x1.1483073142e6p2,-0x1.57e590af09014p0
+tan,0x1.9972d4021c972p-1,0x1.596p-1
+tan,-0x1.9972d4021c972p-1,-0x1.596p-1
+tan,-0x1.e501ffd3a68c4p-2,0x1.5981293783e1fp1
+tan,0x1.e501ffd3a68c4p-2,-0x1.5981293783e1fp1
+tan,0x1.1604cc3dfc418p-1,0x1.5bea01p468
+tan,-0x1.1604cc3dfc418p-1,-0x1.5bea01p468
+tan,-0x1.f76ca50bbbaebp-1,0x1.60661c1969666p2
+tan,0x1.f76ca50bbbaebp-1,-0x1.60661c1969666p2
+tan,0x1.cd8b73c9430ffp0,0x1.62c5a850a142ap59
+tan,-0x1.cd8b73c9430ffp0,-0x1.62c5a850a142ap59
+tan,0x1.3accfd453ee67p0,0x1.64ef438p142
+tan,-0x1.3accfd453ee67p0,-0x1.64ef438p142
+tan,-0x1.acd9302d72de4p-1,0x1.658p2
+tan,0x1.acd9302d72de4p-1,-0x1.658p2
+tan,0x1.f004f875c2e74p-1,0x1.6603c65d348d2p5
+tan,-0x1.f004f875c2e74p-1,-0x1.6603c65d348d2p5
+tan,0x1.f53496e6d7f72p-1,0x1.660e6bf2e092ap5
+tan,-0x1.f53496e6d7f72p-1,-0x1.660e6bf2e092ap5
+tan,0x1.b64ee24f0119cp-1,0x1.6a8p-1
+tan,-0x1.b64ee24f0119cp-1,-0x1.6a8p-1
+tan,-0x1.d9ba9a7975636p60,0x1.6ac5b262ca1ffp849
+tan,0x1.d9ba9a7975636p60,-0x1.6ac5b262ca1ffp849
+tan,0x1.b6f557b999e23p-1,0x1.6aep-1
+tan,-0x1.b6f557b999e23p-1,-0x1.6aep-1
+tan,0x1.c1e1d5c4c0f08p-1,0x1.6cdb36cdb36c9p239
+tan,-0x1.c1e1d5c4c0f08p-1,-0x1.6cdb36cdb36c9p239
+tan,0x1.95bce4f578698p-1,0x1.6f1af1612270ap6
+tan,-0x1.95bce4f578698p-1,-0x1.6f1af1612270ap6
+tan,0x1.711e8f5fffba2p-4,0x1.702p-4
+tan,-0x1.711e8f5fffba2p-4,-0x1.702p-4
+tan,0x1.fb5898f29bb26p2,0x1.72p0
+tan,-0x1.fb5898f29bb26p2,-0x1.72p0
+tan,-0x1.ff9b771284d23p1,0x1.7348c347ddc2p239
+tan,0x1.ff9b771284d23p1,-0x1.7348c347ddc2p239
+tan,0x1.f72d47a0080e3p-2,0x1.739ce739ce738p100
+tan,-0x1.f72d47a0080e3p-2,-0x1.739ce739ce738p100
+tan,0x1.76441e7f8ea6p-4,0x1.753acc3d3ff35p-4
+tan,-0x1.76441e7f8ea6p-4,-0x1.753acc3d3ff35p-4
+tan,0x1.ce3f642e15af4p-1,0x1.77fffffffffffp-1
+tan,-0x1.ce3f642e15af4p-1,-0x1.77fffffffffffp-1
+tan,0x1.f425002a548ebp42,0x1.78fdb9effea26p4
+tan,-0x1.f425002a548ebp42,-0x1.78fdb9effea26p4
+tan,-0x1.dbc80de7dd043p-1,0x1.7a5f74607e851p19
+tan,0x1.dbc80de7dd043p-1,-0x1.7a5f74607e851p19
+tan,0x1.7b3bb3d0b3ca4p42,0x1.7f7ef77e83f1ap19
+tan,-0x1.7b3bb3d0b3ca4p42,-0x1.7f7ef77e83f1ap19
+tan,0x1.e7f05b71cd2d1p33,0x1.7f7f10a07f45ep20
+tan,-0x1.e7f05b71cd2d1p33,-0x1.7f7f10a07f45ep20
+tan,0x1.8000000000004p-25,0x1.7ffffffffffffp-25
+tan,-0x1.8000000000004p-25,-0x1.7ffffffffffffp-25
+tan,0x1.8000000000007p-25,0x1.8000000000002p-25
+tan,-0x1.8000000000007p-25,-0x1.8000000000002p-25
+tan,0x1.24245af4cd995p-52,0x1.81ae0dffa3b33p959
+tan,-0x1.24245af4cd995p-52,-0x1.81ae0dffa3b33p959
+tan,0x1.d72261d98e26cp-1,0x1.846bd7a4dce55p698
+tan,-0x1.d72261d98e26cp-1,-0x1.846bd7a4dce55p698
+tan,0x1.42d8a1ba441adp1,0x1.8720588p392
+tan,-0x1.42d8a1ba441adp1,-0x1.8720588p392
+tan,0x1.ea7b444cd798ep-1,0x1.8722a67ea14acp-1
+tan,-0x1.ea7b444cd798ep-1,-0x1.8722a67ea14acp-1
+tan,-0x1.c7dc7f08dbbap-1,0x1.89936c8828d38p299
+tan,0x1.c7dc7f08dbbap-1,-0x1.89936c8828d38p299
+tan,0x1.569653e319bbap1,0x1.8a69106fb9798p6
+tan,-0x1.569653e319bbap1,-0x1.8a69106fb9798p6
+tan,0x1.f2db21469f3d6p-1,0x1.8b777e1d2308cp-1
+tan,-0x1.f2db21469f3d6p-1,-0x1.8b777e1d2308cp-1
+tan,0x1.f3688bc2594e2p-1,0x1.8bcp-1
+tan,-0x1.f3688bc2594e2p-1,-0x1.8bcp-1
+tan,0x1.8d3a2544566dfp-4,0x1.8bfd2274d851ap-4
+tan,-0x1.8d3a2544566dfp-4,-0x1.8bfd2274d851ap-4
+tan,0x1.f4575cc4e477fp-1,0x1.8c3a450071dd9p-1
+tan,-0x1.f4575cc4e477fp-1,-0x1.8c3a450071dd9p-1
+tan,-0x1.1e09f66c4250cp11,0x1.8cc0dd2b0f4b8p200
+tan,0x1.1e09f66c4250cp11,-0x1.8cc0dd2b0f4b8p200
+tan,0x1.f71496cb921e6p-1,0x1.8dap-1
+tan,-0x1.f71496cb921e6p-1,-0x1.8dap-1
+tan,0x1.f71b4a659116ap-1,0x1.8da368da368d8p-1
+tan,-0x1.f71b4a659116ap-1,-0x1.8da368da368d8p-1
+tan,0x1.ff9b68ccadb3p-1,0x1.91ed64b977a9ap-1
+tan,-0x1.ff9b68ccadb3p-1,-0x1.91ed64b977a9ap-1
+tan,0x1.0000000029048p18,0x1.921f754442d19p0
+tan,-0x1.0000000029048p18,-0x1.921f754442d19p0
+tan,0x1.eef067afd328fp48,0x1.921fb54442d1p0
+tan,-0x1.eef067afd328fp48,-0x1.921fb54442d1p0
+tan,0x1.0000000003af3p-17,0x1.921ff54442d18p1
+tan,-0x1.0000000003af3p-17,-0x1.921ff54442d18p1
+tan,-0x1.b6772cb667dc2p17,0x1.922p0
+tan,0x1.b6772cb667dc2p17,-0x1.922p0
+tan,-0x1.fffffffceeefep-1,0x1.922071c31fc99p20
+tan,0x1.fffffffceeefep-1,-0x1.922071c31fc99p20
+tan,0x1.9d7c1354ba6f8p-3,0x1.97fffffffffffp-3
+tan,-0x1.9d7c1354ba6f8p-3,-0x1.97fffffffffffp-3
+tan,0x1.9af8877bb45e4p-4,0x1.999999a10a13cp-4
+tan,-0x1.9af8877bb45e4p-4,-0x1.999999a10a13cp-4
+tan,-0x1.b6ce128587cdp4,0x1.9b74446ed05dcp0
+tan,0x1.b6ce128587cdp4,-0x1.9b74446ed05dcp0
+tan,0x1.ff65aef54c8fcp-1,0x1.9eae494d2b275p4
+tan,-0x1.ff65aef54c8fcp-1,-0x1.9eae494d2b275p4
+tan,0x1.61776aa407a44p-3,0x1.a8p1
+tan,-0x1.61776aa407a44p-3,-0x1.a8p1
+tan,0x1.b6001de13ad96p-3,0x1.af8p-3
+tan,-0x1.b6001de13ad96p-3,-0x1.af8p-3
+tan,0x1.b5a0503ae354bp-4,0x1.b3f8ea7b1f91bp-4
+tan,-0x1.b5a0503ae354bp-4,-0x1.b3f8ea7b1f91bp-4
+tan,0x1.b5a0503ae4c7bp-4,0x1.b3f8ea7b21008p-4
+tan,-0x1.b5a0503ae4c7bp-4,-0x1.b3f8ea7b21008p-4
+tan,0x1.057584c429b3ap59,0x1.b951f1572eba5p23
+tan,-0x1.057584c429b3ap59,-0x1.b951f1572eba5p23
+tan,-0x1.9a282fa1ff7dap2,0x1.b9cp0
+tan,0x1.9a282fa1ff7dap2,-0x1.b9cp0
+tan,-0x1.027d184afb198p-52,0x1.bab62ed655019p970
+tan,0x1.027d184afb198p-52,-0x1.bab62ed655019p970
+tan,0x1.ca6efdf845d6dp2,0x1.bea1b35f3cb6dp84
+tan,-0x1.ca6efdf845d6dp2,-0x1.bea1b35f3cb6dp84
+tan,0x1.fd87b34747b74p42,0x1.c463abeccb27bp3
+tan,-0x1.fd87b34747b74p42,-0x1.c463abeccb27bp3
+tan,0x1.ffffffffffffbp-1,0x1.c463abeccb2bbp2
+tan,-0x1.ffffffffffffbp-1,-0x1.c463abeccb2bbp2
+tan,0x1.fb057029acfd2p-1,0x1.c6cbe26b7b45fp86
+tan,-0x1.fb057029acfd2p-1,-0x1.c6cbe26b7b45fp86
+tan,0x1.c8d5a08be40c2p-117,0x1.c8d5a08be40c2p-117
+tan,-0x1.c8d5a08be40c2p-117,-0x1.c8d5a08be40c2p-117
+tan,0x1.e5dffd7f06cb3p-2,0x1.cad4e9827a2bep1
+tan,-0x1.e5dffd7f06cb3p-2,-0x1.cad4e9827a2bep1
+tan,0x1.e6be378b1b4ecp-2,0x1.caeb940e4b997p1
+tan,-0x1.e6be378b1b4ecp-2,-0x1.caeb940e4b997p1
+tan,0x1.e72bd025a1fd6p-2,0x1.caf6c04ecd034p1
+tan,-0x1.e72bd025a1fd6p-2,-0x1.caf6c04ecd034p1
+tan,0x1.e844b3d7cbe44p-2,0x1.cb135ec1c956ep1
+tan,-0x1.e844b3d7cbe44p-2,-0x1.cb135ec1c956ep1
+tan,0x1.dd38a1f1d289bp-54,0x1.cb44e86bc192bp648
+tan,-0x1.dd38a1f1d289bp-54,-0x1.cb44e86bc192bp648
+tan,0x1.dd38a1f1d289bp-53,0x1.cb44e86bc192bp649
+tan,-0x1.dd38a1f1d289bp-53,-0x1.cb44e86bc192bp649
+tan,-0x1.fff6e755320edp1,0x1.cb61afedb2b3cp119
+tan,0x1.fff6e755320edp1,-0x1.cb61afedb2b3cp119
+tan,0x1.ccdf4aa6c229p-7,0x1.ccd7834ba3804p-7
+tan,-0x1.ccdf4aa6c229p-7,-0x1.ccd7834ba3804p-7
+tan,0x1.cee50016fc2d9p-4,0x1.ccf0599da478ep-4
+tan,-0x1.cee50016fc2d9p-4,-0x1.ccf0599da478ep-4
+tan,0x1.44cf3ee8a75a8p0,0x1.ce8p-1
+tan,-0x1.44cf3ee8a75a8p0,-0x1.ce8p-1
+tan,0x1.45aa12ff98152p0,0x1.cf276c9cb9afp-1
+tan,-0x1.45aa12ff98152p0,-0x1.cf276c9cb9afp-1
+tan,0x1.f9bc744f61e0fp-4,0x1.d2e979148a458p61
+tan,-0x1.f9bc744f61e0fp-4,-0x1.d2e979148a458p61
+tan,0x1.6e70f9edbd1ap-2,0x1.d6b5ad6b5ab68p100
+tan,-0x1.6e70f9edbd1ap-2,-0x1.d6b5ad6b5ab68p100
+tan,0x1.13e9c6a348e4ap2,0x1.d96e058p488
+tan,-0x1.13e9c6a348e4ap2,-0x1.d96e058p488
+tan,-0x1.d355463c23036p-5,0x1.dd10f25171bc9p5
+tan,0x1.d355463c23036p-5,-0x1.dd10f25171bc9p5
+tan,0x1.ddf21ebf6fc93p-6,0x1.ddcf6e56696a4p-6
+tan,-0x1.ddf21ebf6fc93p-6,-0x1.ddcf6e56696a4p-6
+tan,0x1.5cb0bfc1558p0,0x1.ep-1
+tan,-0x1.5cb0bfc1558p0,-0x1.ep-1
+tan,-0x1.97b5e8ae9a21dp1,0x1.ep0
+tan,0x1.97b5e8ae9a21dp1,-0x1.ep0
+tan,-0x1.f8bf68d0c23f3p0,0x1.e779de779de71p118
+tan,0x1.f8bf68d0c23f3p0,-0x1.e779de779de71p118
+tan,-0x1.fffffffffd71dp-1,0x1.eb0567bed1f71p12
+tan,0x1.fffffffffd71dp-1,-0x1.eb0567bed1f71p12
+tan,0x1.ee788d1cc7955p-4,0x1.ec16f30a34fbcp-4
+tan,-0x1.ee788d1cc7955p-4,-0x1.ec16f30a34fbcp-4
+tan,0x1.efdad938b4b0fp-4,0x1.ed7424ba2aa4ep-4
+tan,-0x1.efdad938b4b0fp-4,-0x1.ed7424ba2aa4ep-4
+tan,0x1.da347607948f4p-1,0x1.ee9eda589039p499
+tan,-0x1.da347607948f4p-1,-0x1.ee9eda589039p499
+tan,0x1.f682d27a8be88p0,0x1.f4ff0d7b3ac1p100
+tan,-0x1.f682d27a8be88p0,-0x1.f4ff0d7b3ac1p100
+tan,-0x1.ffd36a753ced9p-1,0x1.f5a814afd69f5p119
+tan,0x1.ffd36a753ced9p-1,-0x1.f5a814afd69f5p119
+tan,-0x1.0fa7701d059b5p-9,0x1.f8fc824d2693bp61
+tan,0x1.0fa7701d059b5p-9,-0x1.f8fc824d2693bp61
+tan,-0x1.afe3875bd3afep-4,0x1.f9be6f9be6f98p9
+tan,0x1.afe3875bd3afep-4,-0x1.f9be6f9be6f98p9
+tan,0x1.fd1032e82deabp-4,0x1.fa775cd264f43p-4
+tan,-0x1.fd1032e82deabp-4,-0x1.fa775cd264f43p-4
+tan,0x1.fea8c67dd46cbp-4,0x1.fc09b47402d82p-4
+tan,-0x1.fea8c67dd46cbp-4,-0x1.fc09b47402d82p-4
+tan,-0x1.9020caf18a874p-1,0x1.feeffffffffc6p995
+tan,0x1.9020caf18a874p-1,-0x1.feeffffffffc6p995
+tan,0x1.af135beb0f281p0,0x1.ff01fffffffffp7
+tan,-0x1.af135beb0f281p0,-0x1.ff01fffffffffp7
+tan,-0x1.fd97532efd89bp3,0x1.ff8ffffffffffp540
+tan,0x1.fd97532efd89bp3,-0x1.ff8ffffffffffp540
+tan,-0x1.cc32cb9338181p-1,0x1.ff8ffffffffffp870
+tan,0x1.cc32cb9338181p-1,-0x1.ff8ffffffffffp870
+tan,-0x1.8659d3e2b52b8p-1,0x1.ffc1p9
+tan,0x1.8659d3e2b52b8p-1,-0x1.ffc1p9
+tan,-0x1.b66066fb812eep-2,0x1.ffcfff8p19
+tan,0x1.b66066fb812eep-2,-0x1.ffcfff8p19
+tan,-0x1.520ebd32e1d8fp1,0x1.ffcfff8p365
+tan,0x1.520ebd32e1d8fp1,-0x1.ffcfff8p365
+tan,0x1.489813c24d13bp0,0x1.ffcffffffff6cp720
+tan,-0x1.489813c24d13bp0,-0x1.ffcffffffff6cp720
+tan,0x1.413e63f7dd608p0,0x1.ffcfffffffff9p320
+tan,-0x1.413e63f7dd608p0,-0x1.ffcfffffffff9p320
+tan,-0x1.fc3928a39b652p-2,0x1.ffcffffffffffp990
+tan,0x1.fc3928a39b652p-2,-0x1.ffcffffffffffp990
+tan,-0x1.9ad70d284f16ep-1,0x1.ffeffffffffccp995
+tan,0x1.9ad70d284f16ep-1,-0x1.ffeffffffffccp995
+tan,0x1.aad6effcb6784p-3,0x1.ffefffffffffdp366
+tan,-0x1.aad6effcb6784p-3,-0x1.ffefffffffffdp366
+tan,0x1.c88645f9d119fp2,0x1.ffeffffffffffp180
+tan,-0x1.c88645f9d119fp2,-0x1.ffeffffffffffp180
+tan,0x1.131aa7b9d4aap2,0x1.ffeffffffffffp231
+tan,-0x1.131aa7b9d4aap2,-0x1.ffeffffffffffp231
+tan,0x1.f671719be50d2p-3,0x1.ffeffffffffffp1019
+tan,-0x1.f671719be50d2p-3,-0x1.ffeffffffffffp1019
+tan,0x1.ff078a2d2d872p-1,0x1.fff1fffffffffp40
+tan,-0x1.ff078a2d2d872p-1,-0x1.fff1fffffffffp40
+tan,0x1.0784b04fc42a6p9,0x1.fff1fffffffffp41
+tan,-0x1.0784b04fc42a6p9,-0x1.fff1fffffffffp41
+tan,0x1.8eb22dd167a37p0,0x1.fffff1fffffffp-1
+tan,-0x1.8eb22dd167a37p0,-0x1.fffff1fffffffp-1
+tan,-0x1.22e7346fd3ddap1,0x1.ffffff8p119
+tan,0x1.22e7346fd3ddap1,-0x1.ffffff8p119
+tan,-0x1.db0b3b019f176p-3,0x1.ffffff8p192
+tan,0x1.db0b3b019f176p-3,-0x1.ffffff8p192
+tan,0x1.06b6bede91026p-1,0x1.ffffff8p543
+tan,-0x1.06b6bede91026p-1,-0x1.ffffff8p543
+tan,-0x1.40f02a15dfa3dp1,0x1.ffffffffbbfffp40
+tan,0x1.40f02a15dfa3dp1,-0x1.ffffffffbbfffp40
+tan,0x1.ab60112ef4fdep-2,0x1.fffffffff7fffp231
+tan,-0x1.ab60112ef4fdep-2,-0x1.fffffffff7fffp231
+tan,0x1.35a9929eeafd7p0,0x1.fffffffffff78p920
+tan,-0x1.35a9929eeafd7p0,-0x1.fffffffffff78p920
+tan,0x1.4630298f3b993p0,0x1.fffffffffffd5p995
+tan,-0x1.4630298f3b993p0,-0x1.fffffffffffd5p995
+tan,-0x1.9472e045129fep-1,0x1.fffffffffffe8p720
+tan,0x1.9472e045129fep-1,-0x1.fffffffffffe8p720
+tan,0x1.42e586daa1b42p0,0x1.fffffffffffebp920
+tan,-0x1.42e586daa1b42p0,-0x1.fffffffffffebp920
+tan,-0x1.bfc436b94374cp-1,0x1.ffffffffffff1p245
+tan,0x1.bfc436b94374cp-1,-0x1.ffffffffffff1p245
+tan,0x1.35117d4a4f1e5p0,0x1.ffffffffffff4p845
+tan,-0x1.35117d4a4f1e5p0,-0x1.ffffffffffff4p845
+tan,-0x1.bfdd9292798aap-1,0x1.ffffffffffff4p1020
+tan,0x1.bfdd9292798aap-1,-0x1.ffffffffffff4p1020
+tan,-0x1.9b768ccdae6ecp9,0x1.ffffffffffffcp45
+tan,0x1.9b768ccdae6ecp9,-0x1.ffffffffffffcp45
+tan,0x1.feca047f2730fp-1,0x1.ffffffffffffcp474
+tan,-0x1.feca047f2730fp-1,-0x1.ffffffffffffcp474
+tan,-0x1.449f15cc94559p-2,0x1.ffffffffffffcp976
+tan,0x1.449f15cc94559p-2,-0x1.ffffffffffffcp976
+tan,0x1.fffc58da07952p-2,0x1.ffffffffffffep881
+tan,-0x1.fffc58da07952p-2,-0x1.ffffffffffffep881
+tan,-0x1.c1c9195ec23aap-1,0x1.ffffffffffffep970
+tan,0x1.c1c9195ec23aap-1,-0x1.ffffffffffffep970
+tan,0x1.3cc1ed3906d2fp-2,0x1.33328c1b37321p-2
+tan,-0x1.3cc1ed3906d2fp-2,-0x1.33328c1b37321p-2
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x0.0p0,-0x0.0p0
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022
+tan,0x1.0000000000001p-1022,0x1.0000000000001p-1022
+tan,-0x1.0p-1022,-0x1.0p-1022
+tan,0x1.0p-1022,0x1.0p-1022
+tan,-0x0.fffffffffffffp-1022,-0x0.fffffffffffffp-1022
+tan,0x0.fffffffffffffp-1022,0x0.fffffffffffffp-1022
+tan,0x0.fffffffffffffp-1022,0x0.fffffffffffffp-1022
+tan,-0x0.fffffffffffffp-1022,-0x0.fffffffffffffp-1022
+tan,0x1.0p-1022,0x1.0p-1022
+tan,-0x1.0p-1022,-0x1.0p-1022
+tan,0x1.0000000000001p-1022,0x1.0000000000001p-1022
+tan,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022
+tan,0x1.999999f0fb38cp-13,0x1.999999999999ap-13
+tan,-0x1.999999f0fb38cp-13,-0x1.999999999999ap-13
+tan,0x1.99999af720174p-12,0x1.999999999999ap-12
+tan,-0x1.99999af720174p-12,-0x1.999999999999ap-12
+tan,0x1.33333581062a4p-11,0x1.3333333333334p-11
+tan,-0x1.33333581062a4p-11,-0x1.3333333333334p-11
+tan,0x1.99999f0fb3a1p-11,0x1.999999999999ap-11
+tan,-0x1.99999f0fb3a1p-11,-0x1.999999999999ap-11
+tan,0x1.0000055555777p-10,0x1.0p-10
+tan,-0x1.0000055555777p-10,-0x1.0p-10
+tan,0x1.33333c6a7f4ecp-10,0x1.3333333333333p-10
+tan,-0x1.33333c6a7f4ecp-10,-0x1.3333333333333p-10
+tan,0x1.66667508e0a1bp-10,0x1.6666666666666p-10
+tan,-0x1.66667508e0a1bp-10,-0x1.6666666666666p-10
+tan,0x1.9999af7202c36p-10,0x1.9999999999999p-10
+tan,-0x1.9999af7202c36p-10,-0x1.9999999999999p-10
+tan,0x1.ccccebe76f103p-10,0x1.cccccccccccccp-10
+tan,-0x1.ccccebe76f103p-10,-0x1.cccccccccccccp-10
+tan,0x1.0667d5fcf3d08p-7,0x1.0666666666666p-7
+tan,-0x1.0667d5fcf3d08p-7,-0x1.0666666666666p-7
+tan,0x1.ccd4939d0ccd7p-7,0x1.cccccccccccccp-7
+tan,-0x1.ccd4939d0ccd7p-7,-0x1.cccccccccccccp-7
+tan,0x1.49a4fc02ad194p-6,0x1.4999999999999p-6
+tan,-0x1.49a4fc02ad194p-6,-0x1.4999999999999p-6
+tan,0x1.ace5ded5f6be7p-6,0x1.accccccccccccp-6
+tan,-0x1.ace5ded5f6be7p-6,-0x1.accccccccccccp-6
+tan,0x1.081767fd3cb68p-5,0x1.08p-5
+tan,-0x1.081767fd3cb68p-5,-0x1.08p-5
+tan,0x1.39c0d6dea66fbp-5,0x1.399999999999ap-5
+tan,-0x1.39c0d6dea66fbp-5,-0x1.399999999999ap-5
+tan,0x1.6b702b954bc1dp-5,0x1.6b33333333334p-5
+tan,-0x1.6b702b954bc1dp-5,-0x1.6b33333333334p-5
+tan,0x1.9d265618dd0c7p-5,0x1.9cccccccccccep-5
+tan,-0x1.9d265618dd0c7p-5,-0x1.9cccccccccccep-5
+tan,0x1.cee446e4cfd4cp-5,0x1.ce66666666666p-5
+tan,-0x1.cee446e4cfd4cp-5,-0x1.ce66666666666p-5
+tan,0x1.a1eaedd5a4314p-1,0x1.5e7fc4369bdadp-1
+tan,-0x1.a1eaedd5a4314p-1,-0x1.5e7fc4369bdadp-1
+tan,0x1.d93b8aad424dep1,0x1.4e7fc4369bdadp0
+tan,-0x1.d93b8aad424dep1,-0x1.4e7fc4369bdadp0
+tan,-0x1.563acf158c2ebp1,0x1.edbfa651e9c84p0
+tan,0x1.563acf158c2ebp1,-0x1.edbfa651e9c84p0
+tan,-0x1.576b77609f089p-1,0x1.467fc4369bdadp1
+tan,0x1.576b77609f089p-1,-0x1.467fc4369bdadp1
+tan,0x1.00155777aebf7p-5,0x1.961fb54442d18p1
+tan,-0x1.00155777aebf7p-5,-0x1.961fb54442d18p1
+tan,0x1.87e9966e7d22dp-1,0x1.e5bfa651e9c83p1
+tan,-0x1.87e9966e7d22dp-1,-0x1.e5bfa651e9c83p1
+tan,0x1.a49e7d8987851p1,0x1.1aafcbafc85f7p2
+tan,-0x1.a49e7d8987851p1,-0x1.1aafcbafc85f7p2
+tan,-0x1.79ced8156d041p1,0x1.427fc4369bdadp2
+tan,0x1.79ced8156d041p1,-0x1.427fc4369bdadp2
+tan,-0x1.6f1f65cd1e91bp-1,0x1.6a4fbcbd6f562p2
+tan,0x1.6f1f65cd1e91bp-1,-0x1.6a4fbcbd6f562p2
+tan,-0x1.67747d5f844e2p-1,0x1.6af2eff0a2896p2
+tan,0x1.67747d5f844e2p-1,-0x1.6af2eff0a2896p2
+tan,-0x1.626a258815d18p1,0x1.43c62a9d02414p2
+tan,0x1.626a258815d18p1,-0x1.43c62a9d02414p2
+tan,0x1.d6adaf80f8b05p1,0x1.1c99654961f92p2
+tan,-0x1.d6adaf80f8b05p1,-0x1.1c99654961f92p2
+tan,0x1.a94d1b21370d5p-1,0x1.ead93feb8361fp1
+tan,-0x1.a94d1b21370d5p-1,-0x1.ead93feb8361fp1
+tan,0x1.4cba9e7822234p-4,0x1.9c7fb54442d1ap1
+tan,-0x1.4cba9e7822234p-4,-0x1.9c7fb54442d1ap1
+tan,-0x1.2cb6d02634532p-1,0x1.4e262a9d02415p1
+tan,0x1.2cb6d02634532p-1,-0x1.4e262a9d02415p1
+tan,-0x1.18d9112308d5bp1,0x1.ff993feb8362p0
+tan,0x1.18d9112308d5bp1,-0x1.ff993feb8362p0
+tan,0x1.56fe0145cf29p2,0x1.62e62a9d02416p0
+tan,-0x1.56fe0145cf29p2,-0x1.62e62a9d02416p0
+tan,0x1.f4ad353aca454p-1,0x1.8c662a9d02419p-1
+tan,-0x1.f4ad353aca454p-1,-0x1.8c662a9d02419p-1
+tan,0x1.6a7e1f6407ee6p3,-0x1.a8aa1d11c44ffp0
+tan,-0x1.6a7e1f6407ee6p3,0x1.a8aa1d11c44ffp0
+tan,0x1.0d718cfc82464p6,-0x1.95ec8b9e03d54p0
+tan,-0x1.0d718cfc82464p6,0x1.95ec8b9e03d54p0
+tan,-0x1.11d87146c2d5ap4,-0x1.832efa2a435a9p0
+tan,0x1.11d87146c2d5ap4,0x1.832efa2a435a9p0
+tan,-0x1.e3a3729b3e86ep2,-0x1.707168b682dfep0
+tan,0x1.e3a3729b3e86ep2,0x1.707168b682dfep0
+tan,-0x1.3429e61a5d1f3p2,-0x1.5db3d742c2653p0
+tan,0x1.3429e61a5d1f3p2,0x1.5db3d742c2653p0
+tan,-0x1.c08caec5cf997p1,-0x1.4af645cf01ea8p0
+tan,0x1.c08caec5cf997p1,0x1.4af645cf01ea8p0
+tan,-0x1.5d603d751767fp1,-0x1.3838b45b416fdp0
+tan,0x1.5d603d751767fp1,0x1.3838b45b416fdp0
+tan,-0x1.1b48a35b1b278p1,-0x1.257b22e780f52p0
+tan,0x1.1b48a35b1b278p1,0x1.257b22e780f52p0
+tan,-0x1.d74caf9912dc8p0,-0x1.12bd9173c07abp0
+tan,0x1.d74caf9912dc8p0,0x1.12bd9173c07abp0
+tan,-0x1.6be702e1f6cd6p0,-0x1.ea5c3ed5b385p-1
+tan,0x1.6be702e1f6cd6p0,0x1.ea5c3ed5b385p-1
+tan,-0x1.4d0df1fc1d348p0,-0x1.d4b87dab670ap-1
+tan,0x1.4d0df1fc1d348p0,0x1.d4b87dab670ap-1
+tan,-0x1.316c8b068a7afp0,-0x1.bf14bc811a8fp-1
+tan,0x1.316c8b068a7afp0,0x1.bf14bc811a8fp-1
+tan,-0x1.1872a1aaa7e27p0,-0x1.a970fb56ce14p-1
+tan,0x1.1872a1aaa7e27p0,0x1.a970fb56ce14p-1
+tan,-0x1.01aeeed04cbb1p0,-0x1.93cd3a2c8199p-1
+tan,0x1.01aeeed04cbb1p0,0x1.93cd3a2c8199p-1
+tan,-0x1.d98e408ac2086p-1,-0x1.7e297902351ep-1
+tan,0x1.d98e408ac2086p-1,0x1.7e297902351ep-1
+tan,-0x1.b2e4750631c54p-1,-0x1.6885b7d7e8a3p-1
+tan,0x1.b2e4750631c54p-1,0x1.6885b7d7e8a3p-1
+tan,-0x1.8ee916392e046p-1,-0x1.52e1f6ad9c28p-1
+tan,0x1.8ee916392e046p-1,0x1.52e1f6ad9c28p-1
+tan,-0x1.6d395e495f77ep-1,-0x1.3d3e35834fadp-1
+tan,0x1.6d395e495f77ep-1,0x1.3d3e35834fadp-1
+tan,-0x1.24e3e017a098fp-1,-0x1.0a0b02501c799p-1
+tan,0x1.24e3e017a098fp-1,0x1.0a0b02501c799p-1
+tan,-0x1.fdbd5f0596bdcp-2,-0x1.d8f7208e6b82cp-2
+tan,0x1.fdbd5f0596bdcp-2,0x1.d8f7208e6b82cp-2
+tan,-0x1.b5f3d6afbe6f2p-2,-0x1.9dd83c7c9e126p-2
+tan,0x1.b5f3d6afbe6f2p-2,0x1.9dd83c7c9e126p-2
+tan,-0x1.71a0f98081eaap-2,-0x1.62b9586ad0a2p-2
+tan,0x1.71a0f98081eaap-2,0x1.62b9586ad0a2p-2
+tan,-0x1.301909a2c36e9p-2,-0x1.279a74590331ap-2
+tan,0x1.301909a2c36e9p-2,0x1.279a74590331ap-2
+tan,-0x1.e18e941cc7fd5p-3,-0x1.d8f7208e6b829p-3
+tan,0x1.e18e941cc7fd5p-3,0x1.d8f7208e6b829p-3
+tan,-0x1.6650784bbdccp-3,-0x1.62b9586ad0a1ep-3
+tan,0x1.6650784bbdccp-3,0x1.62b9586ad0a1ep-3
+tan,-0x1.db142468cdafcp-4,-0x1.d8f7208e6b826p-4
+tan,0x1.db142468cdafcp-4,0x1.d8f7208e6b826p-4
+tan,-0x1.d97dd6d2e53f3p-5,-0x1.d8f7208e6b82dp-5
+tan,0x1.d97dd6d2e53f3p-5,0x1.d8f7208e6b82dp-5
+tan,0x1.d97dd6d2e53f3p-5,0x1.d8f7208e6b82dp-5
+tan,-0x1.d97dd6d2e53f3p-5,-0x1.d8f7208e6b82dp-5
+tan,0x1.db142468cdb03p-4,0x1.d8f7208e6b82dp-4
+tan,-0x1.db142468cdb03p-4,-0x1.d8f7208e6b82dp-4
+tan,0x1.6650784bbdcc4p-3,0x1.62b9586ad0a22p-3
+tan,-0x1.6650784bbdcc4p-3,-0x1.62b9586ad0a22p-3
+tan,0x1.e18e941cc7fd9p-3,0x1.d8f7208e6b82dp-3
+tan,-0x1.e18e941cc7fd9p-3,-0x1.d8f7208e6b82dp-3
+tan,0x1.301909a2c36ebp-2,0x1.279a74590331cp-2
+tan,-0x1.301909a2c36ebp-2,-0x1.279a74590331cp-2
+tan,0x1.71a0f98081eacp-2,0x1.62b9586ad0a22p-2
+tan,-0x1.71a0f98081eacp-2,-0x1.62b9586ad0a22p-2
+tan,0x1.b5f3d6afbe6f5p-2,0x1.9dd83c7c9e128p-2
+tan,-0x1.b5f3d6afbe6f5p-2,-0x1.9dd83c7c9e128p-2
+tan,0x1.fdbd5f0596bdfp-2,0x1.d8f7208e6b82ep-2
+tan,-0x1.fdbd5f0596bdfp-2,-0x1.d8f7208e6b82ep-2
+tan,0x1.24e3e017a098fp-1,0x1.0a0b02501c799p-1
+tan,-0x1.24e3e017a098fp-1,-0x1.0a0b02501c799p-1
+tan,0x1.6d395e495f778p-1,0x1.3d3e35834faccp-1
+tan,-0x1.6d395e495f778p-1,-0x1.3d3e35834faccp-1
+tan,0x1.8ee916392e03fp-1,0x1.52e1f6ad9c27cp-1
+tan,-0x1.8ee916392e03fp-1,-0x1.52e1f6ad9c27cp-1
+tan,0x1.b2e4750631c4dp-1,0x1.6885b7d7e8a2cp-1
+tan,-0x1.b2e4750631c4dp-1,-0x1.6885b7d7e8a2cp-1
+tan,0x1.d98e408ac207ep-1,0x1.7e297902351dcp-1
+tan,-0x1.d98e408ac207ep-1,-0x1.7e297902351dcp-1
+tan,0x1.01aeeed04cbadp0,0x1.93cd3a2c8198cp-1
+tan,-0x1.01aeeed04cbadp0,-0x1.93cd3a2c8198cp-1
+tan,0x1.1872a1aaa7e22p0,0x1.a970fb56ce13cp-1
+tan,-0x1.1872a1aaa7e22p0,-0x1.a970fb56ce13cp-1
+tan,0x1.316c8b068a7aap0,0x1.bf14bc811a8ecp-1
+tan,-0x1.316c8b068a7aap0,-0x1.bf14bc811a8ecp-1
+tan,0x1.4d0df1fc1d343p0,0x1.d4b87dab6709cp-1
+tan,-0x1.4d0df1fc1d343p0,-0x1.d4b87dab6709cp-1
+tan,0x1.6be702e1f6cdp0,0x1.ea5c3ed5b384cp-1
+tan,-0x1.6be702e1f6cdp0,-0x1.ea5c3ed5b384cp-1
+tan,0x1.d74caf9912dc8p0,0x1.12bd9173c07abp0
+tan,-0x1.d74caf9912dc8p0,-0x1.12bd9173c07abp0
+tan,0x1.1b48a35b1b284p1,0x1.257b22e780f56p0
+tan,-0x1.1b48a35b1b284p1,-0x1.257b22e780f56p0
+tan,0x1.5d603d751769p1,0x1.3838b45b41701p0
+tan,-0x1.5d603d751769p1,-0x1.3838b45b41701p0
+tan,0x1.c08caec5cf9b2p1,0x1.4af645cf01eacp0
+tan,-0x1.c08caec5cf9b2p1,-0x1.4af645cf01eacp0
+tan,0x1.3429e61a5d20bp2,0x1.5db3d742c2657p0
+tan,-0x1.3429e61a5d20bp2,-0x1.5db3d742c2657p0
+tan,0x1.e3a3729b3e8a8p2,0x1.707168b682e02p0
+tan,-0x1.e3a3729b3e8a8p2,-0x1.707168b682e02p0
+tan,0x1.11d87146c2da4p4,0x1.832efa2a435adp0
+tan,-0x1.11d87146c2da4p4,-0x1.832efa2a435adp0
+tan,-0x1.0d718cfc82349p6,0x1.95ec8b9e03d58p0
+tan,0x1.0d718cfc82349p6,-0x1.95ec8b9e03d58p0
+tan,-0x1.6a7e1f6407ee6p3,0x1.a8aa1d11c44ffp0
+tan,0x1.6a7e1f6407ee6p3,-0x1.a8aa1d11c44ffp0
+tan,0x1.9f39ea5bbe475p0,0x1.04aff6d330942p0
+tan,-0x1.9f39ea5bbe475p0,-0x1.04aff6d330942p0
+tan,0x1.9f3c4b8469f85p0,0x1.04b09e98dcdb4p0
+tan,-0x1.9f3c4b8469f85p0,-0x1.04b09e98dcdb4p0
+tan,0x1.9f3eacb224c21p0,0x1.04b1465e89226p0
+tan,-0x1.9f3eacb224c21p0,-0x1.04b1465e89226p0
+tan,0x1.9f410de4eeb69p0,0x1.04b1ee2435698p0
+tan,-0x1.9f410de4eeb69p0,-0x1.04b1ee2435698p0
+tan,0x1.9f436f1cc7e82p0,0x1.04b295e9e1b0ap0
+tan,-0x1.9f436f1cc7e82p0,-0x1.04b295e9e1b0ap0
+tan,0x1.9f45d059b068fp0,0x1.04b33daf8df7cp0
+tan,-0x1.9f45d059b068fp0,-0x1.04b33daf8df7cp0
+tan,0x1.9f48319ba84b2p0,0x1.04b3e5753a3eep0
+tan,-0x1.9f48319ba84b2p0,-0x1.04b3e5753a3eep0
+tan,0x1.9f4a92e2afa0dp0,0x1.04b48d3ae686p0
+tan,-0x1.9f4a92e2afa0dp0,-0x1.04b48d3ae686p0
+tan,0x1.9f4cf42ec67bbp0,0x1.04b5350092ccfp0
+tan,-0x1.9f4cf42ec67bbp0,-0x1.04b5350092ccfp0
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x0.0p0,-0x0.0p0
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,0x1.4d82b68cac19ep-1,0x1.279a74590331bp-1
+tan,-0x1.4d82b68cac19ep-1,-0x1.279a74590331bp-1
+tan,0x1.4d82b68cac1ap-1,0x1.279a74590331cp-1
+tan,-0x1.4d82b68cac1ap-1,-0x1.279a74590331cp-1
+tan,0x1.4d82b68cac1a1p-1,0x1.279a74590331dp-1
+tan,-0x1.4d82b68cac1a1p-1,-0x1.279a74590331dp-1
+tan,-0x1.89712eeca32bfp2,0x1.bb67ae8584ca9p0
+tan,0x1.89712eeca32bfp2,-0x1.bb67ae8584ca9p0
+tan,-0x1.89712eeca32b5p2,0x1.bb67ae8584caap0
+tan,0x1.89712eeca32b5p2,-0x1.bb67ae8584caap0
+tan,-0x1.89712eeca32abp2,0x1.bb67ae8584cabp0
+tan,0x1.89712eeca32abp2,-0x1.bb67ae8584cabp0
+tan,0x1.def49eaab37ap-2,0x1.bffffffffffffp-2
+tan,-0x1.def49eaab37ap-2,-0x1.bffffffffffffp-2
+tan,0x1.def49eaab37a1p-2,0x1.cp-2
+tan,-0x1.def49eaab37a1p-2,-0x1.cp-2
+tan,0x1.def49eaab37a3p-2,0x1.c000000000001p-2
+tan,-0x1.def49eaab37a3p-2,-0x1.c000000000001p-2
+tan,0x1.a46cb2be6a0bp-1,0x1.5ffffffffffffp-1
+tan,-0x1.a46cb2be6a0bp-1,-0x1.5ffffffffffffp-1
+tan,0x1.a46cb2be6a0b2p-1,0x1.6p-1
+tan,-0x1.a46cb2be6a0b2p-1,-0x1.6p-1
+tan,0x1.a46cb2be6a0b4p-1,0x1.6000000000001p-1
+tan,-0x1.a46cb2be6a0b4p-1,-0x1.6000000000001p-1
+tan,0x1.3d6dc956eac7ap1,0x1.2ffffffffffffp0
+tan,-0x1.3d6dc956eac7ap1,-0x1.2ffffffffffffp0
+tan,0x1.3d6dc956eac7dp1,0x1.3p0
+tan,-0x1.3d6dc956eac7dp1,-0x1.3p0
+tan,0x1.3d6dc956eac81p1,0x1.3000000000001p0
+tan,-0x1.3d6dc956eac81p1,-0x1.3000000000001p0
+tan,-0x1.b2d89a9382954p-1,0x1.37fffffffffffp1
+tan,0x1.b2d89a9382954p-1,-0x1.37fffffffffffp1
+tan,-0x1.b2d89a938294cp-1,0x1.38p1
+tan,0x1.b2d89a938294cp-1,-0x1.38p1
+tan,-0x1.b2d89a9382946p-1,0x1.3800000000001p1
+tan,0x1.b2d89a9382946p-1,-0x1.3800000000001p1
+tan,0x1.06f8d014bf084p-4,0x1.069c8b46b3792p-4
+tan,-0x1.06f8d014bf084p-4,-0x1.069c8b46b3792p-4
+tan,0x1.080f73b07051ep-3,0x1.069c8b46b3792p-3
+tan,-0x1.080f73b07051ep-3,-0x1.069c8b46b3792p-3
+tan,0x1.8ed9142fc9189p-3,0x1.89ead0ea0d35bp-3
+tan,-0x1.8ed9142fc9189p-3,-0x1.89ead0ea0d35bp-3
+tan,0x1.0c864083d1e7dp-2,0x1.069c8b46b3792p-2
+tan,-0x1.0c864083d1e7dp-2,-0x1.069c8b46b3792p-2
+tan,0x1.53fdcdfd37f04p-2,0x1.4843ae1860576p-2
+tan,-0x1.53fdcdfd37f04p-2,-0x1.4843ae1860576p-2
+tan,0x1.9e9257e6b62a1p-2,0x1.89ead0ea0d35ap-2
+tan,-0x1.9e9257e6b62a1p-2,-0x1.89ead0ea0d35ap-2
+tan,0x1.ed21e59972b08p-2,0x1.cb91f3bbba13ep-2
+tan,-0x1.ed21e59972b08p-2,-0x1.cb91f3bbba13ep-2
+tan,0x1.205a6009d5e3ep-1,0x1.069c8b46b3791p-1
+tan,-0x1.205a6009d5e3ep-1,-0x1.069c8b46b3791p-1
+tan,0x1.4d466accad48ep-1,0x1.27701caf89e83p-1
+tan,-0x1.4d466accad48ep-1,-0x1.27701caf89e83p-1
+tan,0x1.7e1d936f4d615p-1,0x1.4843ae1860575p-1
+tan,-0x1.7e1d936f4d615p-1,-0x1.4843ae1860575p-1
+tan,0x1.b3df386f18228p-1,0x1.69173f8136c67p-1
+tan,-0x1.b3df386f18228p-1,-0x1.69173f8136c67p-1
+tan,0x1.efd82742d778cp-1,0x1.89ead0ea0d359p-1
+tan,-0x1.efd82742d778cp-1,-0x1.89ead0ea0d359p-1
+tan,0x1.19e26b5ecd5cp0,0x1.aabe6252e3a4bp-1
+tan,-0x1.19e26b5ecd5cp0,-0x1.aabe6252e3a4bp-1
+tan,0x1.41038b70be0fap0,0x1.cb91f3bbba13dp-1
+tan,-0x1.41038b70be0fap0,-0x1.cb91f3bbba13dp-1
+tan,0x1.6efec8c1e493bp0,0x1.ec6585249082fp-1
+tan,-0x1.6efec8c1e493bp0,-0x1.ec6585249082fp-1
+tan,0x1.a64c7c9d65346p0,0x1.069c8b46b3791p0
+tan,-0x1.a64c7c9d65346p0,-0x1.069c8b46b3791p0
+tan,0x1.eab43e0e5e87cp0,0x1.170653fb1eb0ap0
+tan,-0x1.eab43e0e5e87cp0,-0x1.170653fb1eb0ap0
+tan,0x1.21277b97c0137p1,0x1.27701caf89e83p0
+tan,-0x1.21277b97c0137p1,-0x1.27701caf89e83p0
+tan,0x1.5bd13dda077cdp1,0x1.37d9e563f51fcp0
+tan,-0x1.5bd13dda077cdp1,-0x1.37d9e563f51fcp0
+tan,0x1.af4643e9371f9p1,0x1.4843ae1860575p0
+tan,-0x1.af4643e9371f9p1,-0x1.4843ae1860575p0
+tan,0x1.1866fe845e75ap2,0x1.58ad76cccb8eep0
+tan,-0x1.1866fe845e75ap2,-0x1.58ad76cccb8eep0
+tan,0x1.8bdcd54bd5981p2,0x1.69173f8136c67p0
+tan,-0x1.8bdcd54bd5981p2,-0x1.69173f8136c67p0
+tan,0x1.4bb6a64e0625cp3,0x1.79810835a1fep0
+tan,-0x1.4bb6a64e0625cp3,-0x1.79810835a1fep0
+tan,0x1.f2f05cfb656a4p4,0x1.89ead0ea0d359p0
+tan,-0x1.f2f05cfb656a4p4,-0x1.89ead0ea0d359p0
+tan,-0x1.f2f05cfb657f5p4,0x1.9a54999e786d2p0
+tan,0x1.f2f05cfb657f5p4,-0x1.9a54999e786d2p0
+tan,-0x1.4bb6a64e062a7p3,0x1.aabe6252e3a4bp0
+tan,0x1.4bb6a64e062a7p3,-0x1.aabe6252e3a4bp0
+tan,-0x1.8bdcd54bd59b7p2,0x1.bb282b074edc4p0
+tan,0x1.8bdcd54bd59b7p2,-0x1.bb282b074edc4p0
+tan,-0x1.1866fe845e776p2,0x1.cb91f3bbba13dp0
+tan,0x1.1866fe845e776p2,-0x1.cb91f3bbba13dp0
+tan,-0x1.af4643e93721bp1,0x1.dbfbbc70254b6p0
+tan,0x1.af4643e93721bp1,-0x1.dbfbbc70254b6p0
+tan,-0x1.5bd13dda077e4p1,0x1.ec6585249082fp0
+tan,0x1.5bd13dda077e4p1,-0x1.ec6585249082fp0
+tan,-0x1.21277b97c0148p1,0x1.fccf4dd8fbba8p0
+tan,0x1.21277b97c0148p1,-0x1.fccf4dd8fbba8p0
+tan,-0x1.eab43e0e5e891p0,0x1.069c8b46b3791p1
+tan,0x1.eab43e0e5e891p0,-0x1.069c8b46b3791p1
+tan,-0x1.a64c7c9d65353p0,0x1.0ed16fa0e914ep1
+tan,0x1.a64c7c9d65353p0,-0x1.0ed16fa0e914ep1
+tan,-0x1.6efec8c1e4945p0,0x1.170653fb1eb0bp1
+tan,0x1.6efec8c1e4945p0,-0x1.170653fb1eb0bp1
+tan,-0x1.41038b70be1p0,0x1.1f3b3855544c8p1
+tan,0x1.41038b70be1p0,-0x1.1f3b3855544c8p1
+tan,-0x1.19e26b5ecd5c3p0,0x1.27701caf89e85p1
+tan,0x1.19e26b5ecd5c3p0,-0x1.27701caf89e85p1
+tan,-0x1.efd82742d778cp-1,0x1.2fa50109bf842p1
+tan,0x1.efd82742d778cp-1,-0x1.2fa50109bf842p1
+tan,-0x1.b3df386f18225p-1,0x1.37d9e563f51ffp1
+tan,0x1.b3df386f18225p-1,-0x1.37d9e563f51ffp1
+tan,-0x1.7e1d936f4d60fp-1,0x1.400ec9be2abbcp1
+tan,0x1.7e1d936f4d60fp-1,-0x1.400ec9be2abbcp1
+tan,-0x1.4d466accad486p-1,0x1.4843ae1860579p1
+tan,0x1.4d466accad486p-1,-0x1.4843ae1860579p1
+tan,-0x1.205a6009d5e34p-1,0x1.5078927295f36p1
+tan,0x1.205a6009d5e34p-1,-0x1.5078927295f36p1
+tan,-0x1.ed21e59972aefp-2,0x1.58ad76cccb8f3p1
+tan,0x1.ed21e59972aefp-2,-0x1.58ad76cccb8f3p1
+tan,-0x1.9e9257e6b6285p-2,0x1.60e25b27012bp1
+tan,0x1.9e9257e6b6285p-2,-0x1.60e25b27012bp1
+tan,-0x1.53fdcdfd37ee5p-2,0x1.69173f8136c6dp1
+tan,0x1.53fdcdfd37ee5p-2,-0x1.69173f8136c6dp1
+tan,-0x1.0c864083d1e5bp-2,0x1.714c23db6c62ap1
+tan,0x1.0c864083d1e5bp-2,-0x1.714c23db6c62ap1
+tan,-0x1.8ed9142fc913fp-3,0x1.79810835a1fe7p1
+tan,0x1.8ed9142fc913fp-3,-0x1.79810835a1fe7p1
+tan,-0x1.080f73b0704cfp-3,0x1.81b5ec8fd79a4p1
+tan,0x1.080f73b0704cfp-3,-0x1.81b5ec8fd79a4p1
+tan,-0x1.06f8d014bf09bp-4,0x1.89ead0ea0d35bp1
+tan,0x1.06f8d014bf09bp-4,-0x1.89ead0ea0d35bp1
+tan,0x1.0c864083d1e7fp-2,-0x1.81b5ec8fd799fp2
+tan,-0x1.0c864083d1e7fp-2,0x1.81b5ec8fd799fp2
+tan,0x1.205a6009d5e3fp-1,-0x1.714c23db6c626p2
+tan,-0x1.205a6009d5e3fp-1,0x1.714c23db6c626p2
+tan,0x1.efd82742d778ep-1,-0x1.60e25b27012adp2
+tan,-0x1.efd82742d778ep-1,0x1.60e25b27012adp2
+tan,0x1.a64c7c9d65347p0,-0x1.5078927295f34p2
+tan,-0x1.a64c7c9d65347p0,0x1.5078927295f34p2
+tan,0x1.af4643e9371f9p1,-0x1.400ec9be2abbbp2
+tan,-0x1.af4643e9371f9p1,0x1.400ec9be2abbbp2
+tan,0x1.f2f05cfb656aap4,-0x1.2fa50109bf842p2
+tan,-0x1.f2f05cfb656aap4,0x1.2fa50109bf842p2
+tan,-0x1.1866fe845e775p2,-0x1.1f3b3855544c9p2
+tan,0x1.1866fe845e775p2,0x1.1f3b3855544c9p2
+tan,-0x1.eab43e0e5e896p0,-0x1.0ed16fa0e915p2
+tan,0x1.eab43e0e5e896p0,0x1.0ed16fa0e915p2
+tan,-0x1.19e26b5ecd5cdp0,-0x1.fccf4dd8fbbaep1
+tan,0x1.19e26b5ecd5cdp0,0x1.fccf4dd8fbbaep1
+tan,-0x1.4d466accad49fp-1,-0x1.dbfbbc70254bcp1
+tan,0x1.4d466accad49fp-1,0x1.dbfbbc70254bcp1
+tan,-0x1.53fdcdfd37f1fp-2,-0x1.bb282b074edcap1
+tan,0x1.53fdcdfd37f1fp-2,0x1.bb282b074edcap1
+tan,-0x1.06f8d014bf0e9p-4,-0x1.9a54999e786d8p1
+tan,0x1.06f8d014bf0e9p-4,0x1.9a54999e786d8p1
+tan,0x1.8ed9142fc915p-3,-0x1.79810835a1fe6p1
+tan,-0x1.8ed9142fc915p-3,0x1.79810835a1fe6p1
+tan,0x1.ed21e59972ae6p-2,-0x1.58ad76cccb8f4p1
+tan,-0x1.ed21e59972ae6p-2,0x1.58ad76cccb8f4p1
+tan,0x1.b3df386f1821p-1,-0x1.37d9e563f5202p1
+tan,-0x1.b3df386f1821p-1,0x1.37d9e563f5202p1
+tan,0x1.6efec8c1e4926p0,-0x1.170653fb1eb1p1
+tan,-0x1.6efec8c1e4926p0,0x1.170653fb1eb1p1
+tan,0x1.5bd13dda077aep1,-0x1.ec6585249083cp0
+tan,-0x1.5bd13dda077aep1,0x1.ec6585249083cp0
+tan,0x1.4bb6a64e061f7p3,-0x1.aabe6252e3a58p0
+tan,-0x1.4bb6a64e061f7p3,0x1.aabe6252e3a58p0
+tan,-0x1.8bdcd54bd5ap2,-0x1.69173f8136c74p0
+tan,0x1.8bdcd54bd5ap2,0x1.69173f8136c74p0
+tan,-0x1.21277b97c015fp1,-0x1.27701caf89e9p0
+tan,0x1.21277b97c015fp1,0x1.27701caf89e9p0
+tan,-0x1.41038b70be11bp0,-0x1.cb91f3bbba157p-1
+tan,0x1.41038b70be11bp0,0x1.cb91f3bbba157p-1
+tan,-0x1.7e1d936f4d63cp-1,-0x1.4843ae186058ep-1
+tan,0x1.7e1d936f4d63cp-1,0x1.4843ae186058ep-1
+tan,-0x1.9e9257e6b62d9p-2,-0x1.89ead0ea0d38ap-2
+tan,0x1.9e9257e6b62d9p-2,0x1.89ead0ea0d38ap-2
+tan,-0x1.080f73b07057ep-3,-0x1.069c8b46b37fp-3
+tan,0x1.080f73b07057ep-3,0x1.069c8b46b37fp-3
+tan,0x1.080f73b0704bfp-3,0x1.069c8b46b3734p-3
+tan,-0x1.080f73b0704bfp-3,-0x1.069c8b46b3734p-3
+tan,0x1.9e9257e6b626bp-2,0x1.89ead0ea0d32cp-2
+tan,-0x1.9e9257e6b626bp-2,-0x1.89ead0ea0d32cp-2
+tan,0x1.7e1d936f4d5f3p-1,0x1.4843ae186055fp-1
+tan,-0x1.7e1d936f4d5f3p-1,-0x1.4843ae186055fp-1
+tan,0x1.41038b70be0dfp0,0x1.cb91f3bbba128p-1
+tan,-0x1.41038b70be0dfp0,-0x1.cb91f3bbba128p-1
+tan,0x1.21277b97c0116p1,0x1.27701caf89e78p0
+tan,-0x1.21277b97c0116p1,-0x1.27701caf89e78p0
+tan,0x1.8bdcd54bd5915p2,0x1.69173f8136c5cp0
+tan,-0x1.8bdcd54bd5915p2,-0x1.69173f8136c5cp0
+tan,-0x1.4bb6a64e0633cp3,0x1.aabe6252e3a4p0
+tan,0x1.4bb6a64e0633cp3,-0x1.aabe6252e3a4p0
+tan,-0x1.5bd13dda07812p1,0x1.ec65852490824p0
+tan,0x1.5bd13dda07812p1,-0x1.ec65852490824p0
+tan,-0x1.6efec8c1e497p0,0x1.170653fb1eb04p1
+tan,0x1.6efec8c1e497p0,-0x1.170653fb1eb04p1
+tan,-0x1.b3df386f18263p-1,0x1.37d9e563f51f6p1
+tan,0x1.b3df386f18263p-1,-0x1.37d9e563f51f6p1
+tan,-0x1.ed21e59972b5cp-2,0x1.58ad76cccb8e8p1
+tan,0x1.ed21e59972b5cp-2,-0x1.58ad76cccb8e8p1
+tan,-0x1.8ed9142fc9217p-3,0x1.79810835a1fdap1
+tan,0x1.8ed9142fc9217p-3,-0x1.79810835a1fdap1
+tan,0x1.06f8d014bef68p-4,0x1.9a54999e786ccp1
+tan,-0x1.06f8d014bef68p-4,-0x1.9a54999e786ccp1
+tan,0x1.53fdcdfd37eb4p-2,0x1.bb282b074edbep1
+tan,-0x1.53fdcdfd37eb4p-2,-0x1.bb282b074edbep1
+tan,0x1.4d466accad45ap-1,0x1.dbfbbc70254bp1
+tan,-0x1.4d466accad45ap-1,-0x1.dbfbbc70254bp1
+tan,0x1.19e26b5ecd598p0,0x1.fccf4dd8fbba2p1
+tan,-0x1.19e26b5ecd598p0,-0x1.fccf4dd8fbba2p1
+tan,0x1.eab43e0e5e825p0,0x1.0ed16fa0e914ap2
+tan,-0x1.eab43e0e5e825p0,-0x1.0ed16fa0e914ap2
+tan,0x1.1866fe845e6fcp2,0x1.1f3b3855544c3p2
+tan,-0x1.1866fe845e6fcp2,-0x1.1f3b3855544c3p2
+tan,-0x1.f2f05cfb65c5ep4,0x1.2fa50109bf83cp2
+tan,0x1.f2f05cfb65c5ep4,-0x1.2fa50109bf83cp2
+tan,-0x1.af4643e93728dp1,0x1.400ec9be2abb5p2
+tan,0x1.af4643e93728dp1,-0x1.400ec9be2abb5p2
+tan,-0x1.a64c7c9d653ap0,0x1.5078927295f2ep2
+tan,0x1.a64c7c9d653ap0,-0x1.5078927295f2ep2
+tan,-0x1.efd82742d77ebp-1,0x1.60e25b27012a7p2
+tan,0x1.efd82742d77ebp-1,-0x1.60e25b27012a7p2
+tan,-0x1.205a6009d5e7fp-1,0x1.714c23db6c62p2
+tan,0x1.205a6009d5e7fp-1,-0x1.714c23db6c62p2
+tan,-0x1.0c864083d1ee6p-2,0x1.81b5ec8fd7999p2
+tan,0x1.0c864083d1ee6p-2,-0x1.81b5ec8fd7999p2
+tan,0x1.f09b63aa81fc3p-5,0x1.effffffffffffp-5
+tan,-0x1.f09b63aa81fc3p-5,-0x1.effffffffffffp-5
+tan,0x1.f09b63aa81fc4p-5,0x1.fp-5
+tan,-0x1.f09b63aa81fc4p-5,-0x1.fp-5
+tan,0x1.f09b63aa81fc5p-5,0x1.f000000000001p-5
+tan,-0x1.f09b63aa81fc5p-5,-0x1.f000000000001p-5
+tan,0x1.fa8f21c8a33afp-4,0x1.f7fffffffffffp-4
+tan,-0x1.fa8f21c8a33afp-4,-0x1.f7fffffffffffp-4
+tan,0x1.fa8f21c8a33bp-4,0x1.f8p-4
+tan,-0x1.fa8f21c8a33bp-4,-0x1.f8p-4
+tan,0x1.fa8f21c8a33b1p-4,0x1.f800000000001p-4
+tan,-0x1.fa8f21c8a33b1p-4,-0x1.f800000000001p-4
+tan,0x1.4ef06cb4f0a87p-3,0x1.4bfffffffffffp-3
+tan,-0x1.4ef06cb4f0a87p-3,-0x1.4bfffffffffffp-3
+tan,0x1.4ef06cb4f0a88p-3,0x1.4cp-3
+tan,-0x1.4ef06cb4f0a88p-3,-0x1.4cp-3
+tan,0x1.4ef06cb4f0a89p-3,0x1.4c00000000001p-3
+tan,-0x1.4ef06cb4f0a89p-3,-0x1.4c00000000001p-3
+tan,0x1.3cc2a44e29996p-2,0x1.3333333333332p-2
+tan,-0x1.3cc2a44e29996p-2,-0x1.3333333333332p-2
+tan,0x1.3cc2a44e29998p-2,0x1.3333333333333p-2
+tan,-0x1.3cc2a44e29998p-2,-0x1.3333333333333p-2
+tan,0x1.3cc2a44e29999p-2,0x1.3333333333334p-2
+tan,-0x1.3cc2a44e29999p-2,-0x1.3333333333334p-2
+tan,0x1.9943711dc2ce8p-1,0x1.594317acc4ef8p-1
+tan,-0x1.9943711dc2ce8p-1,-0x1.594317acc4ef8p-1
+tan,0x1.9943711dc2ceap-1,0x1.594317acc4ef9p-1
+tan,-0x1.9943711dc2ceap-1,-0x1.594317acc4ef9p-1
+tan,0x1.9943711dc2cecp-1,0x1.594317acc4efap-1
+tan,-0x1.9943711dc2cecp-1,-0x1.594317acc4efap-1
+tan,0x1.fbc511df5917dp-1,0x1.8ffffffffffffp-1
+tan,-0x1.fbc511df5917dp-1,-0x1.8ffffffffffffp-1
+tan,0x1.fbc511df5917fp-1,0x1.9p-1
+tan,-0x1.fbc511df5917fp-1,-0x1.9p-1
+tan,0x1.fbc511df59181p-1,0x1.9000000000001p-1
+tan,-0x1.fbc511df59181p-1,-0x1.9000000000001p-1
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x0.0p0,-0x0.0p0
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,0x1.927278a3b1161p-5,0x1.921fb54442d17p-5
+tan,-0x1.927278a3b1161p-5,-0x1.921fb54442d17p-5
+tan,0x1.927278a3b1162p-5,0x1.921fb54442d18p-5
+tan,-0x1.927278a3b1162p-5,-0x1.921fb54442d18p-5
+tan,0x1.927278a3b1163p-5,0x1.921fb54442d19p-5
+tan,-0x1.927278a3b1163p-5,-0x1.921fb54442d19p-5
+tan,0x1.936bb8c5b2da1p-4,0x1.921fb54442d17p-4
+tan,-0x1.936bb8c5b2da1p-4,-0x1.921fb54442d17p-4
+tan,0x1.936bb8c5b2da2p-4,0x1.921fb54442d18p-4
+tan,-0x1.936bb8c5b2da2p-4,-0x1.921fb54442d18p-4
+tan,0x1.936bb8c5b2da3p-4,0x1.921fb54442d19p-4
+tan,-0x1.936bb8c5b2da3p-4,-0x1.921fb54442d19p-4
+tan,0x1.975f5e0553157p-3,0x1.921fb54442d17p-3
+tan,-0x1.975f5e0553157p-3,-0x1.921fb54442d17p-3
+tan,0x1.975f5e0553158p-3,0x1.921fb54442d18p-3
+tan,-0x1.975f5e0553158p-3,-0x1.921fb54442d18p-3
+tan,0x1.975f5e0553159p-3,0x1.921fb54442d19p-3
+tan,-0x1.975f5e0553159p-3,-0x1.921fb54442d19p-3
+tan,0x1.a827999fcef31p-2,0x1.921fb54442d17p-2
+tan,-0x1.a827999fcef31p-2,-0x1.921fb54442d17p-2
+tan,0x1.a827999fcef32p-2,0x1.921fb54442d18p-2
+tan,-0x1.a827999fcef32p-2,-0x1.921fb54442d18p-2
+tan,0x1.a827999fcef33p-2,0x1.921fb54442d19p-2
+tan,-0x1.a827999fcef33p-2,-0x1.921fb54442d19p-2
+tan,0x1.ffffffffffffdp-1,0x1.921fb54442d17p-1
+tan,-0x1.ffffffffffffdp-1,-0x1.921fb54442d17p-1
+tan,0x1.fffffffffffffp-1,0x1.921fb54442d18p-1
+tan,-0x1.fffffffffffffp-1,-0x1.921fb54442d18p-1
+tan,0x1.0000000000001p0,0x1.921fb54442d19p-1
+tan,-0x1.0000000000001p0,-0x1.921fb54442d19p-1
+tan,0x1.9153d9443ed0bp51,0x1.921fb54442d17p0
+tan,-0x1.9153d9443ed0bp51,-0x1.921fb54442d17p0
+tan,0x1.d02967c31cdb5p53,0x1.921fb54442d18p0
+tan,-0x1.d02967c31cdb5p53,-0x1.921fb54442d18p0
+tan,-0x1.617a15494767ap52,0x1.921fb54442d19p0
+tan,0x1.617a15494767ap52,-0x1.921fb54442d19p0
+tan,-0x1.469898cc51702p-51,0x1.921fb54442d17p1
+tan,0x1.469898cc51702p-51,-0x1.921fb54442d17p1
+tan,-0x1.1a62633145c07p-53,0x1.921fb54442d18p1
+tan,0x1.1a62633145c07p-53,-0x1.921fb54442d18p1
+tan,0x1.72cece675d1fdp-52,0x1.921fb54442d19p1
+tan,-0x1.72cece675d1fdp-52,-0x1.921fb54442d19p1
+tan,-0x1.469898cc51702p-50,0x1.921fb54442d17p2
+tan,0x1.469898cc51702p-50,-0x1.921fb54442d17p2
+tan,-0x1.1a62633145c07p-52,0x1.921fb54442d18p2
+tan,0x1.1a62633145c07p-52,-0x1.921fb54442d18p2
+tan,0x1.72cece675d1fdp-51,0x1.921fb54442d19p2
+tan,-0x1.72cece675d1fdp-51,-0x1.921fb54442d19p2
+tan,-0x1.469898cc51702p-49,0x1.921fb54442d17p3
+tan,0x1.469898cc51702p-49,-0x1.921fb54442d17p3
+tan,-0x1.1a62633145c07p-51,0x1.921fb54442d18p3
+tan,0x1.1a62633145c07p-51,-0x1.921fb54442d18p3
+tan,0x1.72cece675d1fdp-50,0x1.921fb54442d19p3
+tan,-0x1.72cece675d1fdp-50,-0x1.921fb54442d19p3
+tan,-0x1.469898cc51702p-48,0x1.921fb54442d17p4
+tan,0x1.469898cc51702p-48,-0x1.921fb54442d17p4
+tan,-0x1.1a62633145c07p-50,0x1.921fb54442d18p4
+tan,0x1.1a62633145c07p-50,-0x1.921fb54442d18p4
+tan,0x1.72cece675d1fdp-49,0x1.921fb54442d19p4
+tan,-0x1.72cece675d1fdp-49,-0x1.921fb54442d19p4
+tan,-0x1.469898cc51702p-47,0x1.921fb54442d17p5
+tan,0x1.469898cc51702p-47,-0x1.921fb54442d17p5
+tan,-0x1.1a62633145c07p-49,0x1.921fb54442d18p5
+tan,0x1.1a62633145c07p-49,-0x1.921fb54442d18p5
+tan,0x1.72cece675d1fdp-48,0x1.921fb54442d19p5
+tan,-0x1.72cece675d1fdp-48,-0x1.921fb54442d19p5
+tan,-0x1.469898cc51702p-46,0x1.921fb54442d17p6
+tan,0x1.469898cc51702p-46,-0x1.921fb54442d17p6
+tan,-0x1.1a62633145c07p-48,0x1.921fb54442d18p6
+tan,0x1.1a62633145c07p-48,-0x1.921fb54442d18p6
+tan,0x1.72cece675d1fdp-47,0x1.921fb54442d19p6
+tan,-0x1.72cece675d1fdp-47,-0x1.921fb54442d19p6
+tan,-0x1.469898cc51702p-45,0x1.921fb54442d17p7
+tan,0x1.469898cc51702p-45,-0x1.921fb54442d17p7
+tan,-0x1.1a62633145c07p-47,0x1.921fb54442d18p7
+tan,0x1.1a62633145c07p-47,-0x1.921fb54442d18p7
+tan,0x1.72cece675d1fdp-46,0x1.921fb54442d19p7
+tan,-0x1.72cece675d1fdp-46,-0x1.921fb54442d19p7
+tan,-0x1.0000000000005p0,0x1.2d97c7f3321d1p1
+tan,0x1.0000000000005p0,-0x1.2d97c7f3321d1p1
+tan,-0x1.0000000000001p0,0x1.2d97c7f3321d2p1
+tan,0x1.0000000000001p0,-0x1.2d97c7f3321d2p1
+tan,-0x1.ffffffffffffap-1,0x1.2d97c7f3321d3p1
+tan,0x1.ffffffffffffap-1,-0x1.2d97c7f3321d3p1
+tan,0x1.ffffffffffff5p-1,0x1.f6a7a2955385dp1
+tan,-0x1.ffffffffffff5p-1,-0x1.f6a7a2955385dp1
+tan,0x1.ffffffffffffdp-1,0x1.f6a7a2955385ep1
+tan,-0x1.ffffffffffffdp-1,-0x1.f6a7a2955385ep1
+tan,0x1.0000000000003p0,0x1.f6a7a2955385fp1
+tan,-0x1.0000000000003p0,-0x1.f6a7a2955385fp1
+tan,0x1.a8410087262e4p49,0x1.2d97c7f3321d1p2
+tan,-0x1.a8410087262e4p49,-0x1.2d97c7f3321d1p2
+tan,0x1.3570efd768923p52,0x1.2d97c7f3321d2p2
+tan,-0x1.3570efd768923p52,-0x1.2d97c7f3321d2p2
+tan,-0x1.42c0d64d5de51p50,0x1.2d97c7f3321d3p2
+tan,0x1.42c0d64d5de51p50,-0x1.2d97c7f3321d3p2
+tan,-0x1.000000000000ap0,0x1.5fdbbe9bba774p2
+tan,0x1.000000000000ap0,-0x1.5fdbbe9bba774p2
+tan,-0x1.0000000000002p0,0x1.5fdbbe9bba775p2
+tan,0x1.0000000000002p0,-0x1.5fdbbe9bba775p2
+tan,-0x1.ffffffffffff4p-1,0x1.5fdbbe9bba776p2
+tan,0x1.ffffffffffff4p-1,-0x1.5fdbbe9bba776p2
+tan,0x1.fffffffffffebp-1,0x1.c463abeccb2bap2
+tan,-0x1.fffffffffffebp-1,-0x1.c463abeccb2bap2
+tan,0x1.ffffffffffffbp-1,0x1.c463abeccb2bbp2
+tan,-0x1.ffffffffffffbp-1,-0x1.c463abeccb2bbp2
+tan,0x1.0000000000006p0,0x1.c463abeccb2bcp2
+tan,-0x1.0000000000006p0,-0x1.c463abeccb2bcp2
+tan,0x1.7cc080f895856p49,0x1.f6a7a2955385dp2
+tan,-0x1.7cc080f895856p49,-0x1.f6a7a2955385dp2
+tan,0x1.735453027d7c4p51,0x1.f6a7a2955385ep2
+tan,-0x1.735453027d7c4p51,-0x1.f6a7a2955385ep2
+tan,-0x1.86aa4a3a127a4p50,0x1.f6a7a2955385fp2
+tan,0x1.86aa4a3a127a4p50,-0x1.f6a7a2955385fp2
+tan,-0x1.000000000001bp0,0x1.1475cc9eedeffp3
+tan,0x1.000000000001bp0,-0x1.1475cc9eedeffp3
+tan,-0x1.000000000000bp0,0x1.1475cc9eedfp3
+tan,0x1.000000000000bp0,-0x1.1475cc9eedfp3
+tan,-0x1.ffffffffffff6p-1,0x1.1475cc9eedf01p3
+tan,0x1.ffffffffffff6p-1,-0x1.1475cc9eedf01p3
+tan,-0x1.34f272993d141p-49,0x1.2d97c7f3321d1p3
+tan,0x1.34f272993d141p-49,-0x1.2d97c7f3321d1p3
+tan,-0x1.a79394c9e8a0ap-52,0x1.2d97c7f3321d2p3
+tan,0x1.a79394c9e8a0ap-52,-0x1.2d97c7f3321d2p3
+tan,0x1.961b1acd85d7dp-50,0x1.2d97c7f3321d3p3
+tan,-0x1.961b1acd85d7dp-50,-0x1.2d97c7f3321d3p3
+tan,0x1.fffffffffffc9p-1,0x1.46b9c347764a2p3
+tan,-0x1.fffffffffffc9p-1,-0x1.46b9c347764a2p3
+tan,0x1.fffffffffffe9p-1,0x1.46b9c347764a3p3
+tan,-0x1.fffffffffffe9p-1,-0x1.46b9c347764a3p3
+tan,0x1.0000000000004p0,0x1.46b9c347764a4p3
+tan,-0x1.0000000000004p0,-0x1.46b9c347764a4p3
+tan,0x1.9c78eea78baa7p48,0x1.5fdbbe9bba774p3
+tan,-0x1.9c78eea78baa7p48,-0x1.5fdbbe9bba774p3
+tan,0x1.093c3b4aebeb1p51,0x1.5fdbbe9bba775p3
+tan,-0x1.093c3b4aebeb1p51,-0x1.5fdbbe9bba775p3
+tan,-0x1.516ac96142185p49,0x1.5fdbbe9bba776p3
+tan,0x1.516ac96142185p49,-0x1.5fdbbe9bba776p3
+tan,-0x1.000000000001cp0,0x1.78fdb9effea45p3
+tan,0x1.000000000001cp0,-0x1.78fdb9effea45p3
+tan,-0x1.000000000000cp0,0x1.78fdb9effea46p3
+tan,0x1.000000000000cp0,-0x1.78fdb9effea46p3
+tan,-0x1.ffffffffffff8p-1,0x1.78fdb9effea47p3
+tan,0x1.ffffffffffff8p-1,-0x1.78fdb9effea47p3
+tan,0x1.fffffffffffc7p-1,0x1.ab41b09886fe8p3
+tan,-0x1.fffffffffffc7p-1,-0x1.ab41b09886fe8p3
+tan,0x1.fffffffffffe7p-1,0x1.ab41b09886fe9p3
+tan,-0x1.fffffffffffe7p-1,-0x1.ab41b09886fe9p3
+tan,0x1.0000000000003p0,0x1.ab41b09886feap3
+tan,-0x1.0000000000003p0,-0x1.ab41b09886feap3
+tan,0x1.86c4e333b3c9fp48,0x1.c463abeccb2bap3
+tan,-0x1.86c4e333b3c9fp48,-0x1.c463abeccb2bap3
+tan,0x1.9c96951f36184p50,0x1.c463abeccb2bbp3
+tan,-0x1.9c96951f36184p50,-0x1.c463abeccb2bbp3
+tan,-0x1.73244d369e0b7p49,0x1.c463abeccb2bcp3
+tan,0x1.73244d369e0b7p49,-0x1.c463abeccb2bcp3
+tan,-0x1.000000000001dp0,0x1.dd85a7410f58bp3
+tan,0x1.000000000001dp0,-0x1.dd85a7410f58bp3
+tan,-0x1.000000000000dp0,0x1.dd85a7410f58cp3
+tan,0x1.000000000000dp0,-0x1.dd85a7410f58cp3
+tan,-0x1.ffffffffffffap-1,0x1.dd85a7410f58dp3
+tan,0x1.ffffffffffffap-1,-0x1.dd85a7410f58dp3
+tan,-0x1.583ebeff65cc2p-49,0x1.f6a7a2955385dp3
+tan,0x1.583ebeff65cc2p-49,-0x1.f6a7a2955385dp3
+tan,-0x1.60fafbfd97309p-51,0x1.f6a7a2955385ep3
+tan,0x1.60fafbfd97309p-51,-0x1.f6a7a2955385ep3
+tan,0x1.4f8282013467cp-50,0x1.f6a7a2955385fp3
+tan,-0x1.4f8282013467cp-50,-0x1.f6a7a2955385fp3
+tan,0x1.fffffffffff84p-1,0x1.07e4cef4cbd96p4
+tan,-0x1.fffffffffff84p-1,-0x1.07e4cef4cbd96p4
+tan,0x1.fffffffffffc4p-1,0x1.07e4cef4cbd97p4
+tan,-0x1.fffffffffffc4p-1,-0x1.07e4cef4cbd97p4
+tan,0x1.0000000000002p0,0x1.07e4cef4cbd98p4
+tan,-0x1.0000000000002p0,-0x1.07e4cef4cbd98p4
+tan,0x1.2f0842389e5bcp47,0x1.1475cc9eedeffp4
+tan,-0x1.2f0842389e5bcp47,-0x1.1475cc9eedeffp4
+tan,0x1.733c4e8ef9c51p48,0x1.1475cc9eedfp4
+tan,-0x1.733c4e8ef9c51p48,-0x1.1475cc9eedfp4
+tan,-0x1.9c5b4c7289899p49,0x1.1475cc9eedf01p4
+tan,0x1.9c5b4c7289899p49,-0x1.1475cc9eedf01p4
+tan,-0x1.000000000002ep0,0x1.2106ca4910068p4
+tan,0x1.000000000002ep0,-0x1.2106ca4910068p4
+tan,-0x1.000000000000ep0,0x1.2106ca4910069p4
+tan,0x1.000000000000ep0,-0x1.2106ca4910069p4
+tan,-0x1.fffffffffffddp-1,0x1.2106ca491006ap4
+tan,0x1.fffffffffffddp-1,-0x1.2106ca491006ap4
+tan,-0x1.34f272993d141p-48,0x1.2d97c7f3321d1p4
+tan,0x1.34f272993d141p-48,-0x1.2d97c7f3321d1p4
+tan,-0x1.a79394c9e8a0ap-51,0x1.2d97c7f3321d2p4
+tan,0x1.a79394c9e8a0ap-51,-0x1.2d97c7f3321d2p4
+tan,0x1.961b1acd85d7dp-49,0x1.2d97c7f3321d3p4
+tan,-0x1.961b1acd85d7dp-49,-0x1.2d97c7f3321d3p4
+tan,0x1.fffffffffff82p-1,0x1.3a28c59d54339p4
+tan,-0x1.fffffffffff82p-1,-0x1.3a28c59d54339p4
+tan,0x1.fffffffffffc2p-1,0x1.3a28c59d5433ap4
+tan,-0x1.fffffffffffc2p-1,-0x1.3a28c59d5433ap4
+tan,0x1.0000000000001p0,0x1.3a28c59d5433bp4
+tan,-0x1.0000000000001p0,-0x1.3a28c59d5433bp4
+tan,0x1.28f934315e5ecp47,0x1.46b9c347764a2p4
+tan,-0x1.28f934315e5ecp47,-0x1.46b9c347764a2p4
+tan,0x1.618fdb7f21c14p48,0x1.46b9c347764a3p4
+tan,-0x1.618fdb7f21c14p48,-0x1.46b9c347764a3p4
+tan,-0x1.cfde61218ab9ep49,0x1.46b9c347764a4p4
+tan,0x1.cfde61218ab9ep49,-0x1.46b9c347764a4p4
+tan,-0x1.000000000002fp0,0x1.534ac0f19860bp4
+tan,0x1.000000000002fp0,-0x1.534ac0f19860bp4
+tan,-0x1.000000000000fp0,0x1.534ac0f19860cp4
+tan,0x1.000000000000fp0,-0x1.534ac0f19860cp4
+tan,-0x1.fffffffffffdfp-1,0x1.534ac0f19860dp4
+tan,0x1.fffffffffffdfp-1,-0x1.534ac0f19860dp4
+tan,-0x1.3dc585b2c7422p-48,0x1.5fdbbe9bba774p4
+tan,0x1.3dc585b2c7422p-48,-0x1.5fdbbe9bba774p4
+tan,-0x1.ee2c2d963a10cp-51,0x1.5fdbbe9bba775p4
+tan,0x1.ee2c2d963a10cp-51,-0x1.5fdbbe9bba775p4
+tan,0x1.8474f49a717bdp-49,0x1.5fdbbe9bba776p4
+tan,-0x1.8474f49a717bdp-49,-0x1.5fdbbe9bba776p4
+tan,0x1.fffffffffff8p-1,0x1.6c6cbc45dc8dcp4
+tan,-0x1.fffffffffff8p-1,-0x1.6c6cbc45dc8dcp4
+tan,0x1.fffffffffffcp-1,0x1.6c6cbc45dc8ddp4
+tan,-0x1.fffffffffffcp-1,-0x1.6c6cbc45dc8ddp4
+tan,0x1.0p0,0x1.6c6cbc45dc8dep4
+tan,-0x1.0p0,-0x1.6c6cbc45dc8dep4
+tan,0x1.2326f4e8f2bb2p47,0x1.78fdb9effea45p4
+tan,-0x1.2326f4e8f2bb2p47,-0x1.78fdb9effea45p4
+tan,0x1.517ea08708ba7p48,0x1.78fdb9effea46p4
+tan,-0x1.517ea08708ba7p48,-0x1.78fdb9effea46p4
+tan,-0x1.090b3d5161786p50,0x1.78fdb9effea47p4
+tan,0x1.090b3d5161786p50,-0x1.78fdb9effea47p4
+tan,-0x1.0000000000031p0,0x1.858eb79a20baep4
+tan,0x1.0000000000031p0,-0x1.858eb79a20baep4
+tan,-0x1.0000000000011p0,0x1.858eb79a20bafp4
+tan,0x1.0000000000011p0,-0x1.858eb79a20bafp4
+tan,-0x1.fffffffffffe1p-1,0x1.858eb79a20bbp4
+tan,0x1.fffffffffffe1p-1,-0x1.858eb79a20bbp4
+tan,-0x1.af0792001f856p2,0x1.fffffffffffffp62
+tan,0x1.af0792001f856p2,-0x1.fffffffffffffp62
+tan,0x1.52f50e757941dp6,0x1.0p63
+tan,-0x1.52f50e757941dp6,-0x1.0p63
+tan,0x1.7570667d032edp1,0x1.0000000000001p63
+tan,-0x1.7570667d032edp1,-0x1.0000000000001p63
+tan,-0x1.2e8fc248e7b85p0,0x1.fffffffffffffp26
+tan,0x1.2e8fc248e7b85p0,-0x1.fffffffffffffp26
+tan,-0x1.2e8fc1af81d8cp0,0x1.0p27
+tan,0x1.2e8fc1af81d8cp0,-0x1.0p27
+tan,-0x1.2e8fc07cb61a9p0,0x1.0000000000001p27
+tan,0x1.2e8fc07cb61a9p0,-0x1.0000000000001p27
+tan,-0x1.3ea282860e7fcp0,0x1.fffffffffffffp23
+tan,0x1.3ea282860e7fcp0,-0x1.fffffffffffffp23
+tan,-0x1.3ea28271a9beap0,0x1.0p24
+tan,0x1.3ea28271a9beap0,-0x1.0p24
+tan,-0x1.3ea28248e03c7p0,0x1.0000000000001p24
+tan,0x1.3ea28248e03c7p0,-0x1.0000000000001p24
+tan,0x1.2866f9be4de0fp0,0x1.fffffffffffffp1
+tan,-0x1.2866f9be4de0fp0,-0x1.fffffffffffffp1
+tan,0x1.2866f9be4de14p0,0x1.0p2
+tan,-0x1.2866f9be4de14p0,-0x1.0p2
+tan,0x1.2866f9be4de1dp0,0x1.0000000000001p2
+tan,-0x1.2866f9be4de1dp0,-0x1.0000000000001p2
+tan,-0x1.17af62e0950fbp1,0x1.fffffffffffffp0
+tan,0x1.17af62e0950fbp1,-0x1.fffffffffffffp0
+tan,-0x1.17af62e0950f8p1,0x1.0p1
+tan,0x1.17af62e0950f8p1,-0x1.0p1
+tan,-0x1.17af62e0950f2p1,0x1.0000000000001p1
+tan,0x1.17af62e0950f2p1,-0x1.0000000000001p1
+tan,0x1.8eb245cbee3a4p0,0x1.fffffffffffffp-1
+tan,-0x1.8eb245cbee3a4p0,-0x1.fffffffffffffp-1
+tan,0x1.8eb245cbee3a6p0,0x1.0p0
+tan,-0x1.8eb245cbee3a6p0,-0x1.0p0
+tan,0x1.8eb245cbee3a9p0,0x1.0000000000001p0
+tan,-0x1.8eb245cbee3a9p0,-0x1.0000000000001p0
+tan,0x1.17b4f5bf3474ap-1,0x1.fffffffffffffp-2
+tan,-0x1.17b4f5bf3474ap-1,-0x1.fffffffffffffp-2
+tan,0x1.17b4f5bf3474ap-1,0x1.0p-1
+tan,-0x1.17b4f5bf3474ap-1,-0x1.0p-1
+tan,0x1.17b4f5bf3474cp-1,0x1.0000000000001p-1
+tan,-0x1.17b4f5bf3474cp-1,-0x1.0000000000001p-1
+tan,0x1.05785a43c4c55p-2,0x1.fffffffffffffp-3
+tan,-0x1.05785a43c4c55p-2,-0x1.fffffffffffffp-3
+tan,0x1.05785a43c4c56p-2,0x1.0p-2
+tan,-0x1.05785a43c4c56p-2,-0x1.0p-2
+tan,0x1.05785a43c4c57p-2,0x1.0000000000001p-2
+tan,-0x1.05785a43c4c57p-2,-0x1.0000000000001p-2
+tan,0x1.01577af1511a4p-3,0x1.fffffffffffffp-4
+tan,-0x1.01577af1511a4p-3,-0x1.fffffffffffffp-4
+tan,0x1.01577af1511a5p-3,0x1.0p-3
+tan,-0x1.01577af1511a5p-3,-0x1.0p-3
+tan,0x1.01577af1511a6p-3,0x1.0000000000001p-3
+tan,-0x1.01577af1511a6p-3,-0x1.0000000000001p-3
+tan,0x1.005577854dfp-4,0x1.fffffffffffffp-5
+tan,-0x1.005577854dfp-4,-0x1.fffffffffffffp-5
+tan,0x1.005577854df01p-4,0x1.0p-4
+tan,-0x1.005577854df01p-4,-0x1.0p-4
+tan,0x1.005577854df02p-4,0x1.0000000000001p-4
+tan,-0x1.005577854df02p-4,-0x1.0000000000001p-4
+tan,0x1.00155777aec08p-5,0x1.fffffffffffffp-6
+tan,-0x1.00155777aec08p-5,-0x1.fffffffffffffp-6
+tan,0x1.00155777aec08p-5,0x1.0p-5
+tan,-0x1.00155777aec08p-5,-0x1.0p-5
+tan,0x1.00155777aec09p-5,0x1.0000000000001p-5
+tan,-0x1.00155777aec09p-5,-0x1.0000000000001p-5
+tan,0x1.0005557778548p-6,0x1.fffffffffffffp-7
+tan,-0x1.0005557778548p-6,-0x1.fffffffffffffp-7
+tan,0x1.0005557778549p-6,0x1.0p-6
+tan,-0x1.0005557778549p-6,-0x1.0p-6
+tan,0x1.000555777854ap-6,0x1.0000000000001p-6
+tan,-0x1.000555777854ap-6,-0x1.0000000000001p-6
+tan,0x1.0000000555555p-14,0x1.fffffffffffffp-15
+tan,-0x1.0000000555555p-14,-0x1.fffffffffffffp-15
+tan,0x1.0000000555555p-14,0x1.0p-14
+tan,-0x1.0000000555555p-14,-0x1.0p-14
+tan,0x1.0000000555556p-14,0x1.0000000000001p-14
+tan,-0x1.0000000555556p-14,-0x1.0000000000001p-14
+tan,0x1.fffffffffffffp-28,0x1.fffffffffffffp-28
+tan,-0x1.fffffffffffffp-28,-0x1.fffffffffffffp-28
+tan,0x1.0p-27,0x1.0p-27
+tan,-0x1.0p-27,-0x1.0p-27
+tan,0x1.0000000000001p-27,0x1.0000000000001p-27
+tan,-0x1.0000000000001p-27,-0x1.0000000000001p-27
+tan,0x1.fffffffffffffp-31,0x1.fffffffffffffp-31
+tan,-0x1.fffffffffffffp-31,-0x1.fffffffffffffp-31
+tan,0x1.0p-30,0x1.0p-30
+tan,-0x1.0p-30,-0x1.0p-30
+tan,0x1.0000000000001p-30,0x1.0000000000001p-30
+tan,-0x1.0000000000001p-30,-0x1.0000000000001p-30
+tan,0x1.4530cfe729484p-8,-0x1.fffffffffffffp1023
+tan,-0x1.4530cfe729484p-8,0x1.fffffffffffffp1023
+tan,-0x1.4530cfe729484p-8,0x1.fffffffffffffp1023
+tan,0x1.4530cfe729484p-8,-0x1.fffffffffffffp1023
+tan,-0x1.4530cfe729484p-8,0x1.fffffffffffffp1023
+tan,0x1.4530cfe729484p-8,-0x1.fffffffffffffp1023
+tan,0x1.3c6e9970f78b8p1,0x1.ffffffffffffep1023
+tan,-0x1.3c6e9970f78b8p1,-0x1.ffffffffffffep1023
+tan,-0x1.1a62633145c07p-53,0x1.921fb54442d18p1
+tan,0x1.1a62633145c07p-53,-0x1.921fb54442d18p1
+tan,0x1.d02967c31cdb5p53,0x1.921fb54442d18p0
+tan,-0x1.d02967c31cdb5p53,-0x1.921fb54442d18p0
+tan,0x1.8eb245cbee3a9p0,0x1.0000000000001p0
+tan,-0x1.8eb245cbee3a9p0,-0x1.0000000000001p0
+tan,0x1.8eb245cbee3a6p0,0x1.0p0
+tan,-0x1.8eb245cbee3a6p0,-0x1.0p0
+tan,0x1.8eb245cbee3a4p0,0x1.fffffffffffffp-1
+tan,-0x1.8eb245cbee3a4p0,-0x1.fffffffffffffp-1
+tan,0x1.fffffffffffffp-1,0x1.921fb54442d18p-1
+tan,-0x1.fffffffffffffp-1,-0x1.921fb54442d18p-1
+tan,0x1.0000000000001p-1022,0x1.0000000000001p-1022
+tan,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022
+tan,0x1.0p-1022,0x1.0p-1022
+tan,-0x1.0p-1022,-0x1.0p-1022
+tan,0x0.fffffffffffffp-1022,0x0.fffffffffffffp-1022
+tan,-0x0.fffffffffffffp-1022,-0x0.fffffffffffffp-1022
+tan,0x0.ffffffffffffep-1022,0x0.ffffffffffffep-1022
+tan,-0x0.ffffffffffffep-1022,-0x0.ffffffffffffep-1022
+tan,0x0.0000000000002p-1022,0x0.0000000000002p-1022
+tan,-0x0.0000000000002p-1022,-0x0.0000000000002p-1022
+tan,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+tan,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+tan,0x0.0p0,0x0.0p0
+tan,-0x0.0p0,-0x0.0p0
+log,0x1.d77fd13d27fffp-11,0x1.003af6c37c1d3p0
+log,0x1.411efd297c781p-6,0x1.05112792934b3p0
+log,0x1.d4840664446fcp-6,0x1.076d1d8c75ea6p0
+log,0x1.f6e4c3ced7c72p-3,0x1.47408cb9583cep0
+log,0x1.1a0408712e00ap-2,0x1.512b3126454f3p0
+log,0x1.8b52c15ea9c24p-2,0x1.789e95b11578cp0
+log,0x1.d707029bb59d9p-2,0x1.958497f7b353fp0
+log,0x1.0727af5fee8f6p-1,0x1.ac032a8d2ec23p0
+log,0x1.12fcce02efb32p-1,0x1.b604e1942098dp0
+log,0x1.178e6d3ecaceap-1,0x1.b9f1fa4587967p0
+log,0x1.62f71c4656b61p-1,0x1.000976581ce4ep1
+log,0x1.d6336a88077aap0,0x1.91a8dff540ff7p2
+log,0x1.016e82ceda359p1,0x1.de37fb31fd5fcp2
+log,0x1.1e126f5d95f38p1,0x1.2b1199e497739p3
+log,0x1.2f3832cad3d5fp1,0x1.55f0eaa1b2fc8p3
+log,0x1.42ee3c7dc4946p1,0x1.8ede492d96072p3
+log,0x1.6b5df7e3cd422p1,0x1.11867637cbd03p4
+log,0x1.7e7f095703eeep1,0x1.3d9d7d597a9ddp4
+log,0x1.9687c83faf006p1,0x1.7f3825778aaafp4
+log,0x1.83d4bcdebb3f4p2,0x1.ac50b409c8aeep8
+log,0x1.fffffffffffffp-53,0x1.0000000000001p0
+log,0x1.76e7e5d7b6eacp3,0x1.de7cd6751029ap16
+log,0x1.fffffffffffffp-53,0x1.0000000000001p0
+log,-0x1.91550c357f884p8,0x1.0000000000003p-579
+log,0x1.7fffffffffffcp-50,0x1.0000000000006p0
+log,0x1.bffffffffffe8p-48,0x1.000000000001cp0
+log,0x1.7fdfffffff701p-41,0x1.0000000000bffp0
+log,0x1.0fffffffedfp-35,0x1.0000000022p0
+log,0x1.ffffffffp-33,0x1.00000001p0
+log,0x1.7fffff7000004p-25,0x1.000000cp0
+log,0x1.0a2ea3e77af06p1,0x1.0007p3
+log,0x1.90412094d368p-13,0x1.000c82573f5f9p0
+log,0x1.ffe002aa6ab11p-12,0x1.002p0
+log,0x1.bfcf07242969dp-11,0x1.0038p0
+log,0x1.d77fd13d27fffp-11,0x1.003af6c37c1d3p0
+log,0x1.ea054ce8508e5p-10,0x1.007a9ea7a9e8p0
+log,0x1.ff004a7ab9084p-10,0x1.007fdff7fdfep0
+log,0x1.ffda65d44dccdp-10,0x1.0080169a16cd5p0
+log,0x1.b956989d2589dp-9,0x1.00dd0a8317176p0
+log,0x1.fd0816d97152cp-9,0x1.00ff02ba8a543p0
+log,-0x1.37915555785bp9,0x1.00fffffffffffp-899
+log,0x1.64a2a9b6a4058p0,0x1.01c00000000dcp2
+log,0x1.d465957106bd3p-8,0x1.01d6131d09dc5p0
+log,0x1.fdf639bea5ad3p-8,0x1.01fff37a34084p0
+log,0x1.fdf6e4fcf4569p-8,0x1.01fff426c8cb6p0
+log,0x1.fdf6e4fd0426fp-8,0x1.01fff426c8db5p0
+log,0x1.fdfe9c57debe1p-8,0x1.01fffbed922e3p0
+log,-0x1.d17be245122ap3,0x1.028p-21
+log,0x1.6dcb2fed7f25dp-7,0x1.02dfafa07df6dp0
+log,0x1.ff092a85ee03p-7,0x1.040615461f6cap0
+log,0x1.0aa53cea3f1acp-6,0x1.04334eec5a65dp0
+log,0x1.6ea07021c1335p-6,0x1.05cb09bb9fed7p0
+log,0x1.7199f984f5608p-6,0x1.05d735184261cp0
+log,0x1.7788bc9c08318p-6,0x1.05ef7bdee7bep0
+log,0x1.c2688e952a724p-6,0x1.0722a05711778p0
+log,0x1.e02151352512fp-6,0x1.079cf00fe24f9p0
+log,-0x1.3e1fee699c6bcp8,0x1.07cp-459
+log,0x1.f31b56b8b6f1ap-6,0x1.07eb259ee01b5p0
+log,-0x1.d0819095fcd6cp3,0x1.0a8551f8fc7f8p-21
+log,-0x1.0268d40000c72p1,0x1.0fff8p-3
+log,0x1.6b5df7e3cd422p1,0x1.11867637cbd03p4
+log,0x1.6b96cb66f55c2p1,0x1.11ffffffffff8p4
+log,-0x1.f7a213a7cd381p0,0x1.1e6p-3
+log,-0x1.a0765853dec07p8,0x1.206658d9b0f05p-601
+log,0x1.0d7b6ff6e3a24p6,0x1.2514738e6dcadp97
+log,0x1.1ee3899f6818ep1,0x1.2cfbb9e4a1599p3
+log,-0x1.331533367928ap6,0x1.2f0617037e59p-111
+log,-0x1.04c1e6cec9638p3,0x1.2f29fd4b42515p-12
+log,-0x1.0578bc4a143d6p-1,0x1.333e1f03af55ep-1
+log,-0x1.fd2a1d4dcf23ep-2,0x1.3767a0aaf1452p-1
+log,-0x1.fb0ce0ec79bcap-2,0x1.380c640e6246cp-1
+log,-0x1.ee693caa501aap-2,0x1.3bec837d601c1p-1
+log,-0x1.ed67b9b0f2f8ep-2,0x1.3c3cp-1
+log,0x1.25397dc9f85bep1,0x1.3c419b9db662ap3
+log,0x1.9c041f7ed8d33p0,0x1.3ffffffffffffp2
+log,0x1.c8ff7c79a9a22p-3,0x1.4p0
+log,0x1.d42adfec35d14p-3,0x1.41cp0
+log,0x1.d7577477b9eaep-3,0x1.423fc24d04fc6p0
+log,-0x1.d360e90c3850cp-2,0x1.446p-1
+log,-0x1.cdeabe01a86b2p-2,0x1.461c159a76d4bp-1
+log,0x1.fb9186d5e3e24p-3,0x1.47fffffffffffp0
+log,0x1.fb9186d5e3e2ap-3,0x1.48p0
+log,0x1.fb920464f5fc8p-3,0x1.4800141bea83fp0
+log,0x1.fb9c2792045eap-3,0x1.4801b3bf42a4ap0
+log,0x1.fc46718a2dc22p-3,0x1.481cfade8a64dp0
+log,0x1.ff9bd7855aaebp-3,0x1.48a5d0c7ac5b5p0
+log,0x1.ffd65f29bfd4ep-3,0x1.48af356081ca1p0
+log,0x1.e737cb23865c6p-1,0x1.4b8p1
+log,0x1.90ed52d1a23c5p8,0x1.556ee611fa309p578
+log,-0x1.b25b8d863b3b4p3,0x1.55ep-20
+log,0x1.16758a93d29bp6,0x1.5996659966598p100
+log,-0x1.7e3a93bf3540dp-2,0x1.608054de74582p-1
+log,0x1.583a417be2216p-2,0x1.6649bb515354fp0
+log,-0x1.4f7dac3f1d7f4p5,0x1.69b109377f7p-61
+log,0x1.62e42fefa3837p-2,0x1.6a09e667f3b31p0
+log,-0x1.e7a2dd016daa8p1,0x1.6bp-6
+log,0x1.739d7f6bbd006p-2,0x1.7p0
+log,-0x1.4c3af47972063p-2,0x1.7223cef78e25dp-1
+log,-0x1.48e65fe2c2305p-2,0x1.73587ce75368p-1
+log,-0x1.4057b02bfdd0ap-2,0x1.76764087395fcp-1
+log,0x1.4a5f12ed407a4p8,0x1.8ad934b838bdap476
+log,-0x1.83d0f90690d1p1,0x1.8bep-5
+log,-0x1.e387545735931p-1,0x1.8e4p-2
+log,-0x1.fcc59e0136976p-3,0x1.8f6p-1
+log,-0x1.edd6149b33156p-3,0x1.924c57d629082p-1
+log,0x1.cfbe6164a73f2p-2,0x1.92a4cb798664bp0
+log,-0x1.b428216a5c158p4,0x1.98p-40
+log,-0x1.d081f0f25d664p-3,0x1.9819d0255be6p-1
+log,-0x1.cc0d6a92b7916p-1,0x1.a0ef883be2177p-2
+log,-0x1.8f62e2cb65864p-3,0x1.a549336310e6fp-1
+log,-0x1.3651d0de2368ep-3,0x1.b80300c030118p-1
+log,0x1.20f25e686e7fap-1,0x1.c22024dc8289cp0
+log,-0x1.9e327eb6ac2c4p-1,0x1.c8p-2
+log,-0x1.b76f3d0aaf0cap-4,0x1.cbea22c8a9a16p-1
+log,-0x1.9335e5d594992p-4,0x1.cffffffffffffp-1
+log,0x1.b6cc2b05c90a8p2,0x1.dae1894a2dbedp9
+log,-0x1.fc702b8d96d0ep-5,0x1.e1304c1304c13p-1
+log,-0x1.f6c7f7d0b0356p-5,0x1.e185646bc7856p-1
+log,-0x1.eb8dcb764e07ep-5,0x1.e22e7349f6e97p-1
+log,-0x1.d94a9c323e77cp-5,0x1.e341f0592c2abp-1
+log,-0x1.ccb106085394fp-5,0x1.e4005dfd66c32p-1
+log,-0x1.a9bd8afc6d84cp-5,0x1.e61222241ca7fp-1
+log,-0x1.787392a45888ep-5,0x1.e901133e161e4p-1
+log,-0x1.79a634cdfb256p4,0x1.eddc0821c76c1p-35
+log,0x1.5172153d5fe9cp-1,0x1.eed9208a6a349p0
+log,-0x1.12b227244ff98p-5,0x1.ef1dbcea195cdp-1
+log,-0x1.f8a34d2505f81p-6,0x1.f0786fa48bd9cp-1
+log,0x1.06885d03c19c4p1,0x1.f1a945a457d96p2
+log,0x1.a28cccb9c6f0dp6,0x1.f1fffffffffffp150
+log,-0x1.b032da095671ep-6,0x1.f2ab9dee841b5p-1
+log,-0x1.9d66ada690565p-6,0x1.f33e2a944ac96p-1
+log,-0x1.88e7a6bf1b5bap-6,0x1.f3de268394e8dp-1
+log,-0x1.84e362ad21702p-6,0x1.f3fd86b392884p-1
+log,-0x1.744eff6d77ddep-6,0x1.f47f1e1f53f24p-1
+log,-0x1.68b4f86497a0ap0,0x1.f48p-3
+log,-0x1.6f51e68fcd7cep-6,0x1.f4a622df760c9p-1
+log,-0x1.6bab4f93a372p-6,0x1.f4c2b2a5a5c1dp-1
+log,-0x1.65ae4deeda7b8p-6,0x1.f4f18fab5c3b8p-1
+log,-0x1.4c2a64cb22442p-6,0x1.f5b96e5b96eb7p-1
+log,-0x1.43ae6c44b9f76p-6,0x1.f5fbf5cedc48p-1
+log,-0x1.41f7812310c9bp-6,0x1.f60968a5952d9p-1
+log,-0x1.3b0cb0b1469dcp-6,0x1.f63fae6bae321p-1
+log,-0x1.311e67575b4f5p-6,0x1.f68da368da368p-1
+log,-0x1.020da703f2f9dp-6,0x1.f7ffbefc5d9d8p-1
+log,-0x1.0205658935b94p-6,0x1.f7fffffffffe6p-1
+log,-0x1.ae825fe2eb67p-7,0x1.f95139c561139p-1
+log,-0x1.23851c80dddf2p-7,0x1.fb77177fb5d35p-1
+log,-0x1.7c498eb87ed68p-8,0x1.fd09a0b5b17fp-1
+log,-0x1.50dd41aeb4865p-8,0x1.fd6p-1
+log,-0x1.08b8bba5db3a8p-8,0x1.fdef9fe7f9fe3p-1
+log,-0x1.07c989add9f58p-8,0x1.fdf17c5f17cp-1
+log,-0x1.008055958e10bp-8,0x1.fdfffffffff55p-1
+log,-0x1.1f3e47178f97cp-9,0x1.fee1123d05c1bp-1
+log,-0x1.ff7faa9ab1367p-10,0x1.ff007ffffffffp-1
+log,-0x1.ff39ecbe26759p-10,0x1.ff00a2cd88b55p-1
+log,-0x1.6363477698d25p0,0x1.ff020ffffffffp-3
+log,-0x1.f7a248bf22faap-10,0x1.ff046cbe6cbddp-1
+log,-0x1.dae60fee9fa9fp-10,0x1.ff12c3ff12c3p-1
+log,-0x1.d208bc8587776p-10,0x1.ff17309fefcd2p-1
+log,-0x1.babff263eabf8p-12,0x1.ffc8aaff534d4p-1
+log,-0x1.c00c40725b061p-13,0x1.ffe3fffffffffp-1
+log,-0x1.78bfa50041531p-13,0x1.ffe874904abdp-1
+log,-0x1.1148dff957e7cp-13,0x1.ffeeebbaeebb8p-1
+log,-0x1.4aa196aae1ef9p8,0x1.fffffbbffffffp-478
+log,0x1.8e8f43d38041p8,0x1.fffffbbffffffp574
+log,-0x1.0000040100001p-31,0x1.fffffffbfffffp-1
+log,-0x1.ff8040007fc02p-34,0x1.ffffffff003fep-1
+log,0x1.86ef5ccdfa1b1p7,0x1.ffffffffddfffp281
+log,-0x1.0008000000801p-40,0x1.fffffffffdfffp-1
+log,-0x1.0020000000201p-42,0x1.ffffffffff7ffp-1
+log,-0x1.0040000000101p-43,0x1.ffffffffffbffp-1
+log,0x1.30fc1931f09c9p7,0x1.fffffffffffeep219
+log,-0x1.0000000000001p-51,0x1.ffffffffffffcp-1
+log,-0x1.0000000000001p-52,0x1.ffffffffffffep-1
+log,-0x1.03fe55a061c76p-1,0x1.342185798f6d6p-1
+log,-0x1.62e42fefa39f1p-2,0x1.6a09e667f3bccp-1
+log,-0x1.da391c9043a0fp-3,0x1.962b5f9438d25p-1
+log,-0x1.06fbec52082bdp-3,0x1.c24cd8c07de7ep-1
+log,-0x1.1e0a8f670c50bp-5,0x1.ee6e51ecc2fd7p-1
+log,0x1.9e548e7e3dde8p-5,0x1.0d47e58c84098p0
+log,0x1.08e0bae73ac24p-3,0x1.2358a222a6944p0
+log,0x1.9e6462187c36bp-3,0x1.39695eb8c91fp0
+log,0x1.14dd6b0af939bp-2,0x1.4f7a1b4eeba9cp0
+log,0x1.56181f19d7198p-2,0x1.658ad7e50e348p0
+log,0x1.936a82fadcd86p-2,0x1.7b9b947b30bf4p0
+log,0x1.cd45b0a9f2502p-2,0x1.91ac5111534ap0
+log,0x1.02044c9b70627p-1,0x1.a7bd0da775d4cp0
+log,0x1.1c01dad59e73p-1,0x1.bdcdca3d985f8p0
+log,0x1.34bde9b821fe3p-1,0x1.d3de86d3baea4p0
+log,0x1.4c561dbbb21dap-1,0x1.e9ef4369dd75p0
+log,0x1.62e42fefa39ebp-1,0x1.ffffffffffffcp0
+log,-0x1.62e42fefa39f1p-2,0x1.6a09e667f3bccp-1
+log,-0x1.24cfce6f80d9bp-2,0x1.80aa84ce72f89p-1
+log,-0x1.d490246defa6cp-3,0x1.974b2334f2346p-1
+log,-0x1.65d558d4ce00ap-3,0x1.adebc19b71703p-1
+log,-0x1.f991c6cb3b377p-4,0x1.c48c6001f0acp-1
+log,-0x1.31b994d3a4f8p-4,0x1.db2cfe686fe7dp-1
+log,-0x1.ccb73cdddb2b4p-6,0x1.f1cd9cceef23ap-1
+log,0x1.0b94f7c196175p-6,0x1.04371d9ab72fbp0
+log,0x1.e27076e2af2d9p-5,0x1.0f876ccdf6cd9p0
+log,0x1.986d3228180bep-4,0x1.1ad7bc01366b7p0
+log,0x1.1c898c16999f3p-3,0x1.26280b3476095p0
+log,0x1.69d4592a03622p-3,0x1.31785a67b5a73p0
+log,0x1.b44f77bcc8f56p-3,0x1.3cc8a99af5451p0
+log,0x1.fc2d6cf47cf0cp-3,0x1.4818f8ce34e2fp0
+log,0x1.20cdcd192ab65p-2,0x1.536948017480dp0
+log,0x1.426174dbd515ep-2,0x1.5eb99734b41ebp0
+log,0x1.62e42fefa39e5p-2,0x1.6a09e667f3bc9p0
+log,-0x1.269621134db92p-2,0x1.8p-1
+log,-0x1.89fa465cb93c4p-3,0x1.a666666666666p-1
+log,-0x1.af8e8210a4165p-4,0x1.cccccccccccccp-1
+log,-0x1.9ece955321b91p-6,0x1.f333333333332p-1
+log,0x1.8fb063ef2c7d1p-5,0x1.0ccccccccccccp0
+log,0x1.e27076e2af2d8p-4,0x1.1ffffffffffffp0
+log,0x1.7565011e4966ep-3,0x1.3333333333332p0
+log,0x1.f18dc41e8ef17p-3,0x1.4666666666665p0
+log,0x1.334e9e47d07fp-2,0x1.5999999999998p0
+log,0x1.6aac04146152p-2,0x1.6cccccccccccbp0
+log,0x1.9f323ecbf9846p-2,0x1.7fffffffffffep0
+log,0x0.0p0,0x1.0p0
+log,0x1.8663f793c46ccp-4,0x1.199999999999ap0
+log,0x1.7565011e4967cp-3,0x1.3333333333334p0
+log,0x1.0ca937be1b9ep-2,0x1.4cccccccccccep0
+log,0x1.588c2d9133494p-2,0x1.6666666666668p0
+log,0x1.9f323ecbf9851p-2,0x1.8000000000002p0
+log,0x1.e148a1a2726d4p-2,0x1.999999999999cp0
+log,0x1.0fae81914a994p-1,0x1.b333333333336p0
+log,0x1.2cf25fad8f1c7p-1,0x1.cccccccccccdp0
+log,0x1.48a11293d786p-1,0x1.e66666666666ap0
+log,0x1.62e42fefa39efp-1,0x1.0p1
+log,0x1.1542457337d43p6,0x1.0p100
+log,0x1.15a3de711cc55p6,0x1.199999999999ap100
+log,0x1.15fcf7f3c6f8ep6,0x1.3333333333334p100
+log,0x1.164eeeaaf5efdp6,0x1.4cccccccccccep100
+log,0x1.169ad1a0c9077p6,0x1.6666666666668p100
+log,0x1.16e177b203cdbp6,0x1.8000000000002p100
+log,0x1.17238e14da46ap6,0x1.999999999999cp100
+log,0x1.1761a2765a696p6,0x1.b333333333336p100
+log,0x1.179c2a3292f26p6,0x1.cccccccccccdp100
+log,0x1.17d387985f834p6,0x1.e66666666666ap100
+log,0x1.18080dd3171b7p6,0x1.0p101
+log,0x1.1542457337d43p7,0x1.0p200
+log,0x1.157311f22a4ccp7,0x1.199999999999ap200
+log,0x1.159f9eb37f669p7,0x1.3333333333334p200
+log,0x1.15c89a0f16e2p7,0x1.4cccccccccccep200
+log,0x1.15ee8b8a006ddp7,0x1.6666666666668p200
+log,0x1.1611de929dd0fp7,0x1.8000000000002p200
+log,0x1.1632e9c4090d6p7,0x1.999999999999cp200
+log,0x1.1651f3f4c91ecp7,0x1.b333333333336p200
+log,0x1.166f37d2e5635p7,0x1.cccccccccccdp200
+log,0x1.168ae685cbabbp7,0x1.e66666666666ap200
+log,0x1.16a529a32777dp7,0x1.0p201
+log,0x1.5a92d6d005c94p9,0x1.0p1000
+log,-0x1.0000080000555p-20,0x1.ffffep-1
+log,-0x1.0000040000155p-21,0x1.fffffp-1
+log,0x0.0p0,0x1.0p0
+log,0x1.fffff800002abp-22,0x1.000008p0
+log,0x1.fffff00000aabp-21,0x1.00001p0
+log,-0x1.00000002p-30,0x1.fffffff8p-1
+log,-0x1.00000001p-31,0x1.fffffffcp-1
+log,0x0.0p0,0x1.0p0
+log,0x1.fffffffep-32,0x1.00000002p0
+log,0x1.fffffffcp-31,0x1.00000004p0
+log,-0x1.00000000008p-40,0x1.fffffffffep-1
+log,-0x1.00000000004p-41,0x1.ffffffffffp-1
+log,0x0.0p0,0x1.0p0
+log,0x1.ffffffffff8p-42,0x1.00000000008p0
+log,0x1.ffffffffffp-41,0x1.0000000001p0
+log,-0x1.0000000000002p-50,0x1.ffffffffffff8p-1
+log,-0x1.0000000000001p-51,0x1.ffffffffffffcp-1
+log,0x0.0p0,0x1.0p0
+log,0x1.ffffffffffffep-52,0x1.0000000000002p0
+log,0x1.ffffffffffffcp-51,0x1.0000000000004p0
+log,0x1.62e42fefa39efp9,0x1.fffffffffffffp1023
+log,-0x1.74385446d71c3p9,0x0.0000000000001p-1022
+log,-0x1.62e42fefa39f4p-2,0x1.6a09e667f3bcbp-1
+log,-0x1.62e42fefa39f1p-2,0x1.6a09e667f3bccp-1
+log,-0x1.62e42fefa39eep-2,0x1.6a09e667f3bcdp-1
+log,0x1.62e42fefa39ebp-2,0x1.6a09e667f3bcbp0
+log,0x1.62e42fefa39eep-2,0x1.6a09e667f3bccp0
+log,0x1.62e42fefa39fp-2,0x1.6a09e667f3bcdp0
+log,-0x1.62e42fefa39fp-1,0x1.fffffffffffffp-2
+log,-0x1.62e42fefa39efp-1,0x1.0p-1
+log,-0x1.62e42fefa39edp-1,0x1.0000000000001p-1
+log,-0x1.269621134db95p-2,0x1.7ffffffffffffp-1
+log,-0x1.269621134db92p-2,0x1.8p-1
+log,-0x1.269621134db9p-2,0x1.8000000000001p-1
+log,0x1.9f323ecbf9849p-2,0x1.7ffffffffffffp0
+log,0x1.9f323ecbf984cp-2,0x1.8p0
+log,0x1.9f323ecbf984ep-2,0x1.8000000000001p0
+log,0x1.54e3c0b10a364p-9,0x1.00aaaaaaaaaaap0
+log,0x1.54e3c0b10a563p-9,0x1.00aaaaaaaaaabp0
+log,0x1.54e3c0b10a762p-9,0x1.00aaaaaaaaaacp0
+log,0x1.62e42fefa39efp0,0x1.fffffffffffffp1
+log,0x1.62e42fefa39efp0,0x1.0p2
+log,0x1.62e42fefa39fp0,0x1.0000000000001p2
+log,0x1.62e42fefa39eep-1,0x1.fffffffffffffp0
+log,0x1.62e42fefa39efp-1,0x1.0p1
+log,0x1.62e42fefa39f1p-1,0x1.0000000000001p1
+log,-0x1.0p-53,0x1.fffffffffffffp-1
+log,0x0.0p0,0x1.0p0
+log,0x1.fffffffffffffp-53,0x1.0000000000001p0
+log,-0x1.62e42fefa39fp-1,0x1.fffffffffffffp-2
+log,-0x1.62e42fefa39efp-1,0x1.0p-1
+log,-0x1.62e42fefa39edp-1,0x1.0000000000001p-1
+log,-0x1.62e42fefa39fp0,0x1.fffffffffffffp-3
+log,-0x1.62e42fefa39efp0,0x1.0p-2
+log,-0x1.62e42fefa39eep0,0x1.0000000000001p-2
+log,-0x1.0a2b23f3bab74p1,0x1.fffffffffffffp-4
+log,-0x1.0a2b23f3bab73p1,0x1.0p-3
+log,-0x1.0a2b23f3bab73p1,0x1.0000000000001p-3
+log,-0x1.62e42fefa39efp1,0x1.fffffffffffffp-5
+log,-0x1.62e42fefa39efp1,0x1.0p-4
+log,-0x1.62e42fefa39efp1,0x1.0000000000001p-4
+log,-0x1.bb9d3beb8c86bp1,0x1.fffffffffffffp-6
+log,-0x1.bb9d3beb8c86bp1,0x1.0p-5
+log,-0x1.bb9d3beb8c86bp1,0x1.0000000000001p-5
+log,-0x1.0a2b23f3bab74p2,0x1.fffffffffffffp-7
+log,-0x1.0a2b23f3bab73p2,0x1.0p-6
+log,-0x1.0a2b23f3bab73p2,0x1.0000000000001p-6
+log,-0x1.3687a9f1af2b1p2,0x1.fffffffffffffp-8
+log,-0x1.3687a9f1af2b1p2,0x1.0p-7
+log,-0x1.3687a9f1af2b1p2,0x1.0000000000001p-7
+log,-0x1.62e42fefa39efp2,0x1.fffffffffffffp-9
+log,-0x1.62e42fefa39efp2,0x1.0p-8
+log,-0x1.62e42fefa39efp2,0x1.0000000000001p-8
+log,-0x1.8f40b5ed9812dp2,0x1.fffffffffffffp-10
+log,-0x1.8f40b5ed9812dp2,0x1.0p-9
+log,-0x1.8f40b5ed9812dp2,0x1.0000000000001p-9
+log,-0x1.bb9d3beb8c86bp2,0x1.fffffffffffffp-11
+log,-0x1.bb9d3beb8c86bp2,0x1.0p-10
+log,-0x1.bb9d3beb8c86bp2,0x1.0000000000001p-10
+log,-0x1.205966f2b4f12p3,0x1.fffffffffffffp-14
+log,-0x1.205966f2b4f12p3,0x1.0p-13
+log,-0x1.205966f2b4f12p3,0x1.0000000000001p-13
+log,-0x1.205966f2b4f12p3,0x1.fffffffffffffp-14
+log,-0x1.205966f2b4f12p3,0x1.0p-13
+log,-0x1.205966f2b4f12p3,0x1.0000000000001p-13
+log,-0x1.0a2b23f3bab74p1,0x1.fffffffffffffp-4
+log,-0x1.0a2b23f3bab73p1,0x1.0p-3
+log,-0x1.0a2b23f3bab73p1,0x1.0000000000001p-3
+log,-0x1.1178e8227e48p-3,0x1.bffffffffffffp-1
+log,-0x1.1178e8227e47cp-3,0x1.cp-1
+log,-0x1.1178e8227e477p-3,0x1.c000000000001p-1
+log,-0x1.62e42fefa39efp1,0x1.fffffffffffffp-5
+log,-0x1.62e42fefa39efp1,0x1.0p-4
+log,-0x1.62e42fefa39efp1,0x1.0000000000001p-4
+log,-0x1.08598b59e3a0fp-4,0x1.dffffffffffffp-1
+log,-0x1.08598b59e3a07p-4,0x1.ep-1
+log,-0x1.08598b59e39fep-4,0x1.e000000000001p-1
+log,-0x1.bb9d3beb8c86bp1,0x1.fffffffffffffp-6
+log,-0x1.bb9d3beb8c86bp1,0x1.0p-5
+log,-0x1.bb9d3beb8c86bp1,0x1.0000000000001p-5
+log,-0x1.0415d89e74455p-5,0x1.effffffffffffp-1
+log,-0x1.0415d89e74444p-5,0x1.fp-1
+log,-0x1.0415d89e74434p-5,0x1.f000000000001p-1
+log,-0x1.0a2b23f3bab74p2,0x1.fffffffffffffp-7
+log,-0x1.0a2b23f3bab73p2,0x1.0p-6
+log,-0x1.0a2b23f3bab73p2,0x1.0000000000001p-6
+log,-0x1.0205658935868p-6,0x1.f7fffffffffffp-1
+log,-0x1.0205658935847p-6,0x1.f8p-1
+log,-0x1.0205658935827p-6,0x1.f800000000001p-1
+log,-0x1.3687a9f1af2b1p2,0x1.fffffffffffffp-8
+log,-0x1.3687a9f1af2b1p2,0x1.0p-7
+log,-0x1.3687a9f1af2b1p2,0x1.0000000000001p-7
+log,-0x1.010157588deb2p-7,0x1.fbfffffffffffp-1
+log,-0x1.010157588de71p-7,0x1.fcp-1
+log,-0x1.010157588de31p-7,0x1.fc00000000001p-1
+log,-0x1.62e42fefa39efp2,0x1.fffffffffffffp-9
+log,-0x1.62e42fefa39efp2,0x1.0p-8
+log,-0x1.62e42fefa39efp2,0x1.0000000000001p-8
+log,-0x1.0080559588bb6p-8,0x1.fdfffffffffffp-1
+log,-0x1.0080559588b35p-8,0x1.fep-1
+log,-0x1.0080559588ab5p-8,0x1.fe00000000001p-1
+log,-0x1.8f40b5ed9812dp2,0x1.fffffffffffffp-10
+log,-0x1.8f40b5ed9812dp2,0x1.0p-9
+log,-0x1.8f40b5ed9812dp2,0x1.0000000000001p-9
+log,-0x1.0040155d5899ep-9,0x1.fefffffffffffp-1
+log,-0x1.0040155d5889ep-9,0x1.ffp-1
+log,-0x1.0040155d5879dp-9,0x1.ff00000000001p-1
+log,-0x1.bb9d3beb8c86bp2,0x1.fffffffffffffp-11
+log,-0x1.bb9d3beb8c86bp2,0x1.0p-10
+log,-0x1.bb9d3beb8c86bp2,0x1.0000000000001p-10
+log,-0x1.0020055655a8ap-10,0x1.ff7ffffffffffp-1
+log,-0x1.0020055655889p-10,0x1.ff8p-1
+log,-0x1.0020055655689p-10,0x1.ff80000000001p-1
+log,-0x1.205966f2b4f12p3,0x1.fffffffffffffp-14
+log,-0x1.205966f2b4f12p3,0x1.0p-13
+log,-0x1.205966f2b4f12p3,0x1.0000000000001p-13
+log,-0x1.0004001556d56p-13,0x1.ffeffffffffffp-1
+log,-0x1.0004001555d56p-13,0x1.fffp-1
+log,-0x1.0004001554d55p-13,0x1.fff0000000001p-1
+log,0x1.62e42fefa39efp9,0x1.fffffffffffffp1023
+log,0x1.62e42fefa39efp9,0x1.ffffffffffffep1023
+log,0x1.250d048e7a1bdp0,0x1.921fb54442d18p1
+log,0x1.ce6bb25aa1315p-2,0x1.921fb54442d18p0
+log,0x1.fffffffffffffp-53,0x1.0000000000001p0
+log,0x0.0p0,0x1.0p0
+log,-0x1.0p-53,0x1.fffffffffffffp-1
+log,-0x1.eeb95b094c193p-3,0x1.921fb54442d18p-1
+log,-0x1.6232bdd7abcd2p9,0x1.0000000000001p-1022
+log,-0x1.6232bdd7abcd2p9,0x1.0p-1022
+log,-0x1.6232bdd7abcd2p9,0x0.fffffffffffffp-1022
+log,-0x1.6232bdd7abcd2p9,0x0.ffffffffffffep-1022
+log,-0x1.73df9b3adb335p9,0x0.0000000000002p-1022
+log,-0x1.74385446d71c3p9,0x0.0000000000001p-1022
+sin,0x1.9259e3708bd3ap-5,0x1.9283586503fep-5
+sin,-0x1.9259e3708bd3ap-5,-0x1.9283586503fep-5
+sin,0x1.d77b117f230d6p-5,0x1.d7bdcd778049fp-5
+sin,-0x1.d77b117f230d6p-5,-0x1.d7bdcd778049fp-5
+sin,0x1.a1490c8c06ba7p-4,0x1.a202b3fb84788p-4
+sin,-0x1.a1490c8c06ba7p-4,-0x1.a202b3fb84788p-4
+sin,0x1.cc40c3805229ap-3,0x1.d037cb27ee6dfp-3
+sin,-0x1.cc40c3805229ap-3,-0x1.d037cb27ee6dfp-3
+sin,0x1.d0ef799001ba9p-3,0x1.d5064e6fe82c5p-3
+sin,-0x1.d0ef799001ba9p-3,-0x1.d5064e6fe82c5p-3
+sin,0x1.e9950730c4696p-2,0x1.fe767739d0f6dp-2
+sin,-0x1.e9950730c4696p-2,-0x1.fe767739d0f6dp-2
+sin,0x1.98dcd09337793p-1,0x1.d98c4c612718dp-1
+sin,-0x1.98dcd09337793p-1,-0x1.d98c4c612718dp-1
+sin,0x1.0p0,0x1.921fb54442d18p0
+sin,-0x1.0p0,-0x1.921fb54442d18p0
+sin,0x1.70a9d825b5064p-1,-0x1.0000001f8p500
+sin,-0x1.70a9d825b5064p-1,0x1.0000001f8p500
+sin,0x1.bf3980c6c1e9fp-1,-0x1.00c0bf8p700
+sin,-0x1.bf3980c6c1e9fp-1,0x1.00c0bf8p700
+sin,0x1.d62899d48b43ap-4,-0x1.13fffffffff8p6
+sin,-0x1.d62899d48b43ap-4,0x1.13fffffffff8p6
+sin,-0x1.17b7a60ce1f15p-5,-0x1.17c5920767dfcp-5
+sin,0x1.17b7a60ce1f15p-5,0x1.17c5920767dfcp-5
+sin,0x1.f0192b794fbbep-1,-0x1.1d99be08713ccp2
+sin,-0x1.f0192b794fbbep-1,0x1.1d99be08713ccp2
+sin,-0x1.5e61328c0034fp-3,-0x1.1ddbfd64fc0d3p81
+sin,0x1.5e61328c0034fp-3,0x1.1ddbfd64fc0d3p81
+sin,0x1.fb028c5df1db4p-1,-0x1.1e2a1563e068ep7
+sin,-0x1.fb028c5df1db4p-1,0x1.1e2a1563e068ep7
+sin,-0x1.2cefb196ba208p-3,-0x1.2e07a91314dp-3
+sin,0x1.2cefb196ba208p-3,0x1.2e07a91314dp-3
+sin,0x1.b80f489d3edf5p-2,-0x1.3bcec270444e2p3
+sin,-0x1.b80f489d3edf5p-2,0x1.3bcec270444e2p3
+sin,-0x1.4fffffffffa39p-20,-0x1.500000000004p-20
+sin,0x1.4fffffffffa39p-20,0x1.500000000004p-20
+sin,-0x1.d29da5b44f51cp-2,-0x1.559001a42d90cp1
+sin,0x1.d29da5b44f51cp-2,0x1.559001a42d90cp1
+sin,-0x1.f85f526147f78p-1,-0x1.597bf3e9776b7p99
+sin,0x1.f85f526147f78p-1,0x1.597bf3e9776b7p99
+sin,-0x1.6d61b58c99c43p-59,-0x1.6c6cbc45dc8dep7
+sin,0x1.6d61b58c99c43p-59,0x1.6c6cbc45dc8dep7
+sin,0x1.e5c3c08a258a8p-1,-0x1.73d8d173f90dp4
+sin,-0x1.e5c3c08a258a8p-1,0x1.73d8d173f90dp4
+sin,0x1.feb36806ca5fbp-1,-0x1.8c202d3a31802p6
+sin,-0x1.feb36806ca5fbp-1,0x1.8c202d3a31802p6
+sin,-0x1.7c6c7b01b98dap-1,-0x1.acd538b1a6d5dp-1
+sin,0x1.7c6c7b01b98dap-1,0x1.acd538b1a6d5dp-1
+sin,-0x1.191be2059dcb6p-1,-0x1.b7525ac97e0d2p2
+sin,0x1.191be2059dcb6p-1,0x1.b7525ac97e0d2p2
+sin,-0x1.f8305993a212cp-1,-0x1.bee5fa8a84b02p0
+sin,0x1.f8305993a212cp-1,0x1.bee5fa8a84b02p0
+sin,0x1.ff3b13530fd71p-1,-0x1.c393979fe5921p9
+sin,-0x1.ff3b13530fd71p-1,0x1.c393979fe5921p9
+sin,-0x1.f119da81a4da6p-1,-0x1.c48ffc72563c8p18
+sin,0x1.f119da81a4da6p-1,0x1.c48ffc72563c8p18
+sin,-0x1.fd73b81e04cccp-1,-0x1.c79548bc31856p3
+sin,0x1.fd73b81e04cccp-1,0x1.c79548bc31856p3
+sin,-0x1.c7885aef33a95p-3,-0x1.cb6p-3
+sin,0x1.c7885aef33a95p-3,0x1.cb6p-3
+sin,-0x1.e6494911eedd1p-7,-0x1.e64ddaf7bd72fp-7
+sin,0x1.e6494911eedd1p-7,0x1.e64ddaf7bd72fp-7
+sin,0x1.e180eef5b1c88p-1,-0x1.ecdd0fbf07942p5
+sin,-0x1.e180eef5b1c88p-1,0x1.ecdd0fbf07942p5
+sin,-0x1.fd98d20c1be44p-1,-0x1.f073a23292337p2
+sin,0x1.fd98d20c1be44p-1,0x1.f073a23292337p2
+sin,-0x1.7268c112297c8p-5,-0x1.f5e4c410f4ef8p15
+sin,0x1.7268c112297c8p-5,0x1.f5e4c410f4ef8p15
+sin,0x1.420796146070ep-18,-0x1.f8000000002p95
+sin,-0x1.420796146070ep-18,0x1.f8000000002p95
+sin,-0x1.e4f6dc499d9ccp-2,-0x1.f9365d79546e1p-2
+sin,0x1.e4f6dc499d9ccp-2,0x1.f9365d79546e1p-2
+sin,0x1.b2ef99b140d65p-14,-0x1.ffffffffffe7ep1023
+sin,-0x1.b2ef99b140d65p-14,0x1.ffffffffffe7ep1023
+sin,0x1.db0ffc3ecc6e4p-1,0x1.0p15
+sin,-0x1.db0ffc3ecc6e4p-1,-0x1.0p15
+sin,-0x1.e98f87098b627p-1,0x1.0000000000001p13
+sin,0x1.e98f87098b627p-1,-0x1.0000000000001p13
+sin,0x1.053c35068e10dp-4,0x1.0000000000001p52
+sin,-0x1.053c35068e10dp-4,-0x1.0000000000001p52
+sin,0x1.72d421b6884e5p-1,0x1.0000000000001p228
+sin,-0x1.72d421b6884e5p-1,-0x1.0000000000001p228
+sin,0x1.77fba987c5654p-1,0x1.0000000000001p491
+sin,-0x1.77fba987c5654p-1,-0x1.0000000000001p491
+sin,-0x1.723b2625331afp-1,0x1.0000000000003p215
+sin,0x1.723b2625331afp-1,-0x1.0000000000003p215
+sin,0x1.aed548f090cf5p-1,0x1.0000000000006p0
+sin,-0x1.aed548f090cf5p-1,-0x1.0000000000006p0
+sin,-0x1.ff983208c7dc9p-1,0x1.0000000000007p8
+sin,0x1.ff983208c7dc9p-1,-0x1.0000000000007p8
+sin,0x1.ffef29dc38453p-1,0x1.0000000000007p275
+sin,-0x1.ffef29dc38453p-1,-0x1.0000000000007p275
+sin,-0x1.fa88c375723c1p-8,0x1.0000000000007p449
+sin,0x1.fa88c375723c1p-8,-0x1.0000000000007p449
+sin,0x1.fff5322c94eaep-1,0x1.0000000000011p644
+sin,-0x1.fff5322c94eaep-1,-0x1.0000000000011p644
+sin,-0x1.a73630af8f15cp-1,0x1.000000000001fp164
+sin,0x1.a73630af8f15cp-1,-0x1.000000000001fp164
+sin,0x1.1c548f9249e44p-2,0x1.0000000000038p380
+sin,-0x1.1c548f9249e44p-2,-0x1.0000000000038p380
+sin,0x1.ca965bd2c4dffp-3,0x1.0000000000118p380
+sin,-0x1.ca965bd2c4dffp-3,-0x1.0000000000118p380
+sin,-0x1.837b9dddc24dp-1,0x1.000000000012cp2
+sin,0x1.837b9dddc24dp-1,-0x1.000000000012cp2
+sin,0x1.d82c1784c3eccp-2,0x1.00000000001f8p700
+sin,-0x1.d82c1784c3eccp-2,-0x1.00000000001f8p700
+sin,0x1.fffeaaaaef2eep-8,0x1.00000000002p-7
+sin,-0x1.fffeaaaaef2eep-8,-0x1.00000000002p-7
+sin,-0x1.0871bddd90fc6p-1,0x1.00000000002p40
+sin,0x1.0871bddd90fc6p-1,-0x1.00000000002p40
+sin,0x1.fffeaaaaef2fp-8,0x1.0000000000201p-7
+sin,-0x1.fffeaaaaef2fp-8,-0x1.0000000000201p-7
+sin,0x1.fffeaaaaef33p-8,0x1.0000000000221p-7
+sin,-0x1.fffeaaaaef33p-8,-0x1.0000000000221p-7
+sin,0x1.fffeaaaaef362p-8,0x1.000000000023ap-7
+sin,-0x1.fffeaaaaef362p-8,-0x1.000000000023ap-7
+sin,0x1.e0c6edfa93601p-9,0x1.0000000004p45
+sin,-0x1.e0c6edfa93601p-9,-0x1.0000000004p45
+sin,0x1.ea1f618356db1p-5,0x1.0000000cp40
+sin,-0x1.ea1f618356db1p-5,-0x1.0000000cp40
+sin,0x1.faaeed7587542p-3,0x1.00000013c86f4p-2
+sin,-0x1.faaeed7587542p-3,-0x1.00000013c86f4p-2
+sin,0x1.540bc7785680bp-1,0x1.001p13
+sin,-0x1.540bc7785680bp-1,-0x1.001p13
+sin,-0x1.37a7cb907a2e5p-1,0x1.003p699
+sin,0x1.37a7cb907a2e5p-1,-0x1.003p699
+sin,-0x1.29e5845fc54b5p-1,0x1.0038p40
+sin,0x1.29e5845fc54b5p-1,-0x1.0038p40
+sin,0x1.ffe5ca4656491p-1,0x1.007p10
+sin,-0x1.ffe5ca4656491p-1,-0x1.007p10
+sin,0x1.ea4df82db014bp-1,0x1.007p25
+sin,-0x1.ea4df82db014bp-1,-0x1.007p25
+sin,0x1.fe757aef1c80cp-1,0x1.007p41
+sin,-0x1.fe757aef1c80cp-1,-0x1.007p41
+sin,0x1.e9b71805ec068p-7,0x1.00cp41
+sin,-0x1.e9b71805ec068p-7,-0x1.00cp41
+sin,0x1.b0b6d0a540583p-1,0x1.01c00000001p0
+sin,-0x1.b0b6d0a540583p-1,-0x1.01c00000001p0
+sin,0x1.fef0092627012p-3,0x1.02322e46da919p-2
+sin,-0x1.fef0092627012p-3,-0x1.02322e46da919p-2
+sin,0x1.ffc90059804a1p-3,0x1.02a236478p-2
+sin,-0x1.ffc90059804a1p-3,-0x1.02a236478p-2
+sin,0x1.ffd10a6b5429fp-3,0x1.02a65d08ca5e5p-2
+sin,-0x1.ffd10a6b5429fp-3,-0x1.02a65d08ca5e5p-2
+sin,0x1.ffd10ab302a3fp-3,0x1.02a65d2dce49ap-2
+sin,-0x1.ffd10ab302a3fp-3,-0x1.02a65d2dce49ap-2
+sin,0x1.ffe0b1764ca4cp-3,0x1.02ae7238ap-2
+sin,-0x1.ffe0b1764ca4cp-3,-0x1.02ae7238ap-2
+sin,-0x1.f68f0e26c0f6bp-3,0x1.0501d22221dacp621
+sin,0x1.f68f0e26c0f6bp-3,-0x1.0501d22221dacp621
+sin,0x1.b63c41f09eb75p-1,0x1.06ffffffffff8p0
+sin,-0x1.b63c41f09eb75p-1,-0x1.06ffffffffff8p0
+sin,-0x1.ffdc173adabb2p-1,0x1.07023d3d44215p12
+sin,0x1.ffdc173adabb2p-1,-0x1.07023d3d44215p12
+sin,0x1.0889e11bef135p-5,0x1.0895a7a3e8ae6p-5
+sin,-0x1.0889e11bef135p-5,-0x1.0895a7a3e8ae6p-5
+sin,0x1.08ca077c76445p-5,0x1.08d5d69840601p-5
+sin,-0x1.08ca077c76445p-5,-0x1.08d5d69840601p-5
+sin,-0x1.ff7fbe518023fp-1,0x1.0ep6
+sin,0x1.ff7fbe518023fp-1,-0x1.0ep6
+sin,-0x1.fd6c68b877afep-1,0x1.107ba49c346e4p9
+sin,0x1.fd6c68b877afep-1,-0x1.107ba49c346e4p9
+sin,-0x1.a2ba6bc70bce4p-1,0x1.149154477444p745
+sin,0x1.a2ba6bc70bce4p-1,-0x1.149154477444p745
+sin,0x1.165609790f235p-5,0x1.1663c0e51818p-5
+sin,-0x1.165609790f235p-5,-0x1.1663c0e51818p-5
+sin,-0x1.fc0523ff94e45p-1,0x1.1745d1745d176p238
+sin,0x1.fc0523ff94e45p-1,-0x1.1745d1745d176p238
+sin,0x1.f34a729c584bdp-1,0x1.17472a408a3ep97
+sin,-0x1.f34a729c584bdp-1,-0x1.17472a408a3ep97
+sin,0x1.177fae169fdf1p-5,0x1.178d91b6b992dp-5
+sin,-0x1.177fae169fdf1p-5,-0x1.178d91b6b992dp-5
+sin,0x1.177fae16a120fp-5,0x1.178d91b6bad4ep-5
+sin,-0x1.177fae16a120fp-5,-0x1.178d91b6bad4ep-5
+sin,0x1.177fae16a1f79p-5,0x1.178d91b6bbabap-5
+sin,-0x1.177fae16a1f79p-5,-0x1.178d91b6bbabap-5
+sin,0x1.177fae16a40ffp-5,0x1.178d91b6bdc45p-5
+sin,-0x1.177fae16a40ffp-5,-0x1.178d91b6bdc45p-5
+sin,0x1.297c768f2413p-1,0x1.19752dbee5f6ap933
+sin,-0x1.297c768f2413p-1,-0x1.19752dbee5f6ap933
+sin,0x1.b826df5cafafap-2,0x1.1b3009cfe4dbcp8
+sin,-0x1.b826df5cafafap-2,-0x1.1b3009cfe4dbcp8
+sin,0x1.b7a5956250b6bp-2,0x1.1f6475d95bf18p3
+sin,-0x1.b7a5956250b6bp-2,-0x1.1f6475d95bf18p3
+sin,0x1.4db6566b64548p-1,0x1.229148a452291p118
+sin,-0x1.4db6566b64548p-1,-0x1.229148a452291p118
+sin,0x1.1686fee2c49a8p-1,0x1.268p-1
+sin,-0x1.1686fee2c49a8p-1,-0x1.268p-1
+sin,0x1.22eb21a44d627p-2,0x1.26fb3844dd19p-2
+sin,-0x1.22eb21a44d627p-2,-0x1.26fb3844dd19p-2
+sin,0x1.d4a216d89b2b3p-1,0x1.27fffffffe6bp0
+sin,-0x1.d4a216d89b2b3p-1,-0x1.27fffffffe6bp0
+sin,-0x1.76c9b0f3a22f8p-1,0x1.284b84048d481p204
+sin,0x1.76c9b0f3a22f8p-1,-0x1.284b84048d481p204
+sin,-0x1.ff01226f97d33p-1,0x1.2999e3109cad4p2
+sin,0x1.ff01226f97d33p-1,-0x1.2999e3109cad4p2
+sin,0x1.2a8f11e7ae82cp-5,0x1.2aap-5
+sin,-0x1.2a8f11e7ae82cp-5,-0x1.2aap-5
+sin,0x1.2b03d1bf773dfp-5,0x1.2b14d3be0c23p-5
+sin,-0x1.2b03d1bf773dfp-5,-0x1.2b14d3be0c23p-5
+sin,-0x1.ffb90ee641792p-1,0x1.2b7cb44849981p2
+sin,0x1.ffb90ee641792p-1,-0x1.2b7cb44849981p2
+sin,-0x1.ffffff79e71a4p-1,0x1.2becc8685258p200
+sin,0x1.ffffff79e71a4p-1,-0x1.2becc8685258p200
+sin,-0x1.fff9edaf85b77p-1,0x1.2cfa14ce27cd5p2
+sin,0x1.fff9edaf85b77p-1,-0x1.2cfa14ce27cd5p2
+sin,0x1.2cbaaa4cebb52p-4,0x1.2dp-4
+sin,-0x1.2cbaaa4cebb52p-4,-0x1.2dp-4
+sin,-0x1.ffffbc177e01p-1,0x1.2d76d18721be8p2
+sin,0x1.ffffbc177e01p-1,-0x1.2d76d18721be8p2
+sin,0x1.745843dfafefdp-18,0x1.302a494e0909p97
+sin,-0x1.745843dfafefdp-18,-0x1.302a494e0909p97
+sin,0x1.ffcc568d42376p-1,0x1.31cc731cc731cp1000
+sin,-0x1.ffcc568d42376p-1,-0x1.31cc731cc731cp1000
+sin,0x1.b676077d4faf8p-1,0x1.328463d4f8ca6p441
+sin,-0x1.b676077d4faf8p-1,-0x1.328463d4f8ca6p441
+sin,-0x1.0p0,0x1.32ce90b32171ep18
+sin,0x1.0p0,-0x1.32ce90b32171ep18
+sin,0x1.35cbd3240d149p-5,0x1.35debd7f020ecp-5
+sin,-0x1.35cbd3240d149p-5,-0x1.35debd7f020ecp-5
+sin,0x1.3bb2086559faap-7,0x1.3bb3487893405p-7
+sin,-0x1.3bb2086559faap-7,-0x1.3bb3487893405p-7
+sin,0x1.3bb2086559facp-7,0x1.3bb3487893407p-7
+sin,-0x1.3bb2086559facp-7,-0x1.3bb3487893407p-7
+sin,0x1.dff197edc51d2p-16,0x1.3bb681d65aa6p100
+sin,-0x1.dff197edc51d2p-16,-0x1.3bb681d65aa6p100
+sin,-0x1.5d08d3dbb41bp-3,0x1.3f9aa8626042fp83
+sin,0x1.5d08d3dbb41bp-3,-0x1.3f9aa8626042fp83
+sin,0x1.fb503983f94bbp-3,0x1.3fep19
+sin,-0x1.fb503983f94bbp-3,-0x1.3fep19
+sin,-0x1.d3876eacc9ee7p-1,0x1.4285478f1e3c8p58
+sin,0x1.d3876eacc9ee7p-1,-0x1.4285478f1e3c8p58
+sin,0x1.42b66d54f69c1p-5,0x1.42cbcf45a169ep-5
+sin,-0x1.42b66d54f69c1p-5,-0x1.42cbcf45a169ep-5
+sin,0x1.b45e9e9427554p-1,0x1.43fffffffff6ap557
+sin,-0x1.b45e9e9427554p-1,-0x1.43fffffffff6ap557
+sin,0x1.43ffffffea603p-17,0x1.44p-17
+sin,-0x1.43ffffffea603p-17,-0x1.44p-17
+sin,-0x1.6a4e98d2d8b1cp-1,0x1.4748c08dc0976p200
+sin,0x1.6a4e98d2d8b1cp-1,-0x1.4748c08dc0976p200
+sin,-0x1.b57ca8aacf2a9p-1,0x1.478fc08p43
+sin,0x1.b57ca8aacf2a9p-1,-0x1.478fc08p43
+sin,0x1.ffe38008ef6b5p-1,0x1.4cf36d17c596ep200
+sin,-0x1.ffe38008ef6b5p-1,-0x1.4cf36d17c596ep200
+sin,0x1.d6457a3f12e6cp-1,0x1.4f0f308p488
+sin,-0x1.d6457a3f12e6cp-1,-0x1.4f0f308p488
+sin,0x1.4fffffffff9f9p-20,0x1.5p-20
+sin,-0x1.4fffffffff9f9p-20,-0x1.5p-20
+sin,-0x1.cbad095f503a2p-1,0x1.5143e25a488f1p3
+sin,0x1.cbad095f503a2p-1,-0x1.5143e25a488f1p3
+sin,-0x1.f942d6262e82ep-5,0x1.51f0f44da4df4p200
+sin,0x1.f942d6262e82ep-5,-0x1.51f0f44da4df4p200
+sin,-0x1.fc466ccaece8p-3,0x1.52ad6c5a3602fp16
+sin,0x1.fc466ccaece8p-3,-0x1.52ad6c5a3602fp16
+sin,0x1.d69c3cf4eecdep-1,0x1.52f00ep793
+sin,-0x1.d69c3cf4eecdep-1,-0x1.52f00ep793
+sin,0x1.e120292f3d495p-1,0x1.5555555555556p239
+sin,-0x1.e120292f3d495p-1,-0x1.5555555555556p239
+sin,-0x1.fd1d85b7ef004p-1,0x1.5a0000008p6
+sin,0x1.fd1d85b7ef004p-1,-0x1.5a0000008p6
+sin,0x1.5aff9664b07e2p-6,0x1.5b063ad2dd08fp-6
+sin,-0x1.5aff9664b07e2p-6,-0x1.5b063ad2dd08fp-6
+sin,-0x1.83f8bbb59f2f8p-1,0x1.5b179d75fa285p2
+sin,0x1.83f8bbb59f2f8p-1,-0x1.5b179d75fa285p2
+sin,0x1.fa865b0d99497p-1,0x1.5bb5967402f9cp79
+sin,-0x1.fa865b0d99497p-1,-0x1.5bb5967402f9cp79
+sin,0x1.e8a523fce884dp-2,0x1.5bea01p468
+sin,-0x1.e8a523fce884dp-2,-0x1.5bea01p468
+sin,-0x1.ff2ad941f0a41p-1,0x1.5f19fbc507af6p9
+sin,0x1.ff2ad941f0a41p-1,-0x1.5f19fbc507af6p9
+sin,-0x1.75ce4a0d0bd03p-1,0x1.60a610a658da9p889
+sin,0x1.75ce4a0d0bd03p-1,-0x1.60a610a658da9p889
+sin,-0x1.721586594ab48p-1,0x1.62ad7ce17143dp62
+sin,0x1.721586594ab48p-1,-0x1.62ad7ce17143dp62
+sin,0x1.b8d27019d1b9fp-2,0x1.645926cc1132cp9
+sin,-0x1.b8d27019d1b9fp-2,-0x1.645926cc1132cp9
+sin,0x1.647e09059c1eap-9,0x1.647e25d391f17p-9
+sin,-0x1.647e09059c1eap-9,-0x1.647e25d391f17p-9
+sin,-0x1.8d3b53ff85a82p-1,0x1.64ef438p142
+sin,0x1.8d3b53ff85a82p-1,-0x1.64ef438p142
+sin,-0x1.f7c8630e62a02p-1,0x1.6599665996658p3
+sin,0x1.f7c8630e62a02p-1,-0x1.6599665996658p3
+sin,0x1.67028e3602035p-5,0x1.672p-5
+sin,-0x1.67028e3602035p-5,-0x1.672p-5
+sin,0x1.bc60c8c33cb5fp-2,0x1.688ae6c138ea8p299
+sin,-0x1.bc60c8c33cb5fp-2,-0x1.688ae6c138ea8p299
+sin,-0x1.fc3b4bb8b012ep-1,0x1.6aa78p17
+sin,0x1.fc3b4bb8b012ep-1,-0x1.6aa78p17
+sin,0x1.0p0,0x1.6ac5b262ca1ffp849
+sin,-0x1.0p0,-0x1.6ac5b262ca1ffp849
+sin,-0x1.82317836a97c8p-1,0x1.6d88083749412p4
+sin,0x1.82317836a97c8p-1,-0x1.6d88083749412p4
+sin,0x1.6f781c78cc82bp-6,0x1.6f8p-6
+sin,-0x1.6f781c78cc82bp-6,-0x1.6f8p-6
+sin,-0x1.fdbe5085494aep-1,0x1.729aa6859d1f4p396
+sin,0x1.fdbe5085494aep-1,-0x1.729aa6859d1f4p396
+sin,-0x1.fffffae862b5p-1,0x1.73e2dbe9a2f8p10
+sin,0x1.fffffae862b5p-1,-0x1.73e2dbe9a2f8p10
+sin,0x1.769ac74459b06p-7,0x1.769cde0b90b8p-7
+sin,-0x1.769ac74459b06p-7,-0x1.769cde0b90b8p-7
+sin,0x1.769e8afb6a4ecp-5,0x1.76cp-5
+sin,-0x1.769e8afb6a4ecp-5,-0x1.76cp-5
+sin,0x1.fd562611f5bd4p-1,0x1.78001p0
+sin,-0x1.fd562611f5bd4p-1,-0x1.78001p0
+sin,0x1.fdba784ca00f2p-1,0x1.7ap0
+sin,-0x1.fdba784ca00f2p-1,-0x1.7ap0
+sin,0x1.f930c222a8683p-5,0x1.7abd870381c2dp38
+sin,-0x1.f930c222a8683p-5,-0x1.7abd870381c2dp38
+sin,0x1.ffeb2ff2b6923p-1,0x1.7dc945c21248p95
+sin,-0x1.ffeb2ff2b6923p-1,-0x1.7dc945c21248p95
+sin,0x1.b279153c23fb2p-2,0x1.7f73e1594b70cp98
+sin,-0x1.b279153c23fb2p-2,-0x1.7f73e1594b70cp98
+sin,-0x1.599fad35cf60bp-41,0x1.7f7ef77e83f1ap21
+sin,0x1.599fad35cf60bp-41,-0x1.7f7ef77e83f1ap21
+sin,0x1.feb7a9b2c6d8bp-1,0x1.8p0
+sin,-0x1.feb7a9b2c6d8bp-1,-0x1.8p0
+sin,0x1.f798d01ec615cp-1,0x1.8p6
+sin,-0x1.f798d01ec615cp-1,-0x1.8p6
+sin,0x1.fee1a2a977bcfp-1,0x1.8132ceb1c4f39p0
+sin,-0x1.fee1a2a977bcfp-1,-0x1.8132ceb1c4f39p0
+sin,-0x1.24245af4cd995p-52,0x1.81ae0dffa3b33p959
+sin,0x1.24245af4cd995p-52,-0x1.81ae0dffa3b33p959
+sin,0x1.85d41b0bf3091p-4,0x1.85ec5a399a2e6p1
+sin,-0x1.85d41b0bf3091p-4,-0x1.85ec5a399a2e6p1
+sin,0x1.1e42ae3cfbdc6p-24,0x1.86a0092754022p16
+sin,-0x1.1e42ae3cfbdc6p-24,-0x1.86a0092754022p16
+sin,-0x1.dbf4e594cefe1p-1,0x1.8720588p392
+sin,0x1.dbf4e594cefe1p-1,-0x1.8720588p392
+sin,0x1.44302d6a82d4p-9,0x1.8929354ebc6aap43
+sin,-0x1.44302d6a82d4p-9,-0x1.8929354ebc6aap43
+sin,0x1.8a52189ec3487p-5,0x1.8a791e4791e75p-5
+sin,-0x1.8a52189ec3487p-5,-0x1.8a791e4791e75p-5
+sin,-0x1.fe8566e538123p-1,0x1.8ba761438f5edp11
+sin,0x1.fe8566e538123p-1,-0x1.8ba761438f5edp11
+sin,0x1.fff42aca4cb5ap-1,0x1.8eaf16de6392p0
+sin,-0x1.fff42aca4cb5ap-1,-0x1.8eaf16de6392p0
+sin,0x1.fffb7d3f3a253p-1,0x1.9p0
+sin,-0x1.fffb7d3f3a253p-1,-0x1.9p0
+sin,-0x1.e815770667fd9p-4,0x1.91a5657fb6a9ap6
+sin,0x1.e815770667fd9p-4,-0x1.91a5657fb6a9ap6
+sin,-0x1.fffffffd311dcp-1,0x1.921fb54468847p37
+sin,0x1.fffffffd311dcp-1,-0x1.921fb54468847p37
+sin,0x1.ffffffff875e6p-17,0x1.921ff54442d18p2
+sin,-0x1.ffffffff875e6p-17,-0x1.921ff54442d18p2
+sin,0x1.812a5da3777cdp-8,0x1.928p2
+sin,-0x1.812a5da3777cdp-8,-0x1.928p2
+sin,0x1.fff9be8d82573p-1,0x1.94ap0
+sin,-0x1.fff9be8d82573p-1,-0x1.94ap0
+sin,0x1.947b0ace235f3p-5,0x1.94a5294a51bdep-5
+sin,-0x1.947b0ace235f3p-5,-0x1.94a5294a51bdep-5
+sin,0x1.c34f70e55a708p-2,0x1.94a5294a52948p100
+sin,-0x1.c34f70e55a708p-2,-0x1.94a5294a52948p100
+sin,0x1.950bcfc0f3d51p-5,0x1.95361b8f7697dp-5
+sin,-0x1.950bcfc0f3d51p-5,-0x1.95361b8f7697dp-5
+sin,0x1.6c548bfcce696p-1,0x1.956p-1
+sin,-0x1.6c548bfcce696p-1,-0x1.956p-1
+sin,0x1.ffeffdbf67ca6p-1,0x1.962p0
+sin,-0x1.ffeffdbf67ca6p-1,-0x1.962p0
+sin,0x1.9708213bf67f5p-5,0x1.97330d2ea16d9p-5
+sin,-0x1.9708213bf67f5p-5,-0x1.97330d2ea16d9p-5
+sin,0x1.972bf92713d51p-5,0x1.9756f073b6b61p-5
+sin,-0x1.972bf92713d51p-5,-0x1.9756f073b6b61p-5
+sin,0x1.976845ebe7119p-5,0x1.97935055cec1bp-5
+sin,-0x1.976845ebe7119p-5,-0x1.97935055cec1bp-5
+sin,0x1.97535cee51a43p-4,0x1.98p-4
+sin,-0x1.97535cee51a43p-4,-0x1.98p-4
+sin,0x1.6f494c3356177p-1,0x1.999999a42160cp-1
+sin,-0x1.6f494c3356177p-1,-0x1.999999a42160cp-1
+sin,0x1.6f494c37edd6ep-1,0x1.999999aab8f5p-1
+sin,-0x1.6f494c37edd6ep-1,-0x1.999999aab8f5p-1
+sin,0x1.6fa912bdeaab2p-1,0x1.9a2324b9c6326p-1
+sin,-0x1.6fa912bdeaab2p-1,-0x1.9a2324b9c6326p-1
+sin,0x1.70c7ef4ef9b34p-1,0x1.9bcp-1
+sin,-0x1.70c7ef4ef9b34p-1,-0x1.9bcp-1
+sin,0x1.ff28176ad3164p-1,0x1.a0d1d817d6c4ap0
+sin,-0x1.ff28176ad3164p-1,-0x1.a0d1d817d6c4ap0
+sin,0x1.749468a7248dep-1,0x1.a141c9de12fdfp-1
+sin,-0x1.749468a7248dep-1,-0x1.a141c9de12fdfp-1
+sin,0x1.754ebb7e73f46p-1,0x1.a251bc6766f2p-1
+sin,-0x1.754ebb7e73f46p-1,-0x1.a251bc6766f2p-1
+sin,-0x1.7c3bfefa74bd1p-1,0x1.a2689ae1b86ddp62
+sin,0x1.7c3bfefa74bd1p-1,-0x1.a2689ae1b86ddp62
+sin,-0x1.ffff4f3648e03p-1,0x1.a3f66180c455p100
+sin,0x1.ffff4f3648e03p-1,-0x1.a3f66180c455p100
+sin,-0x1.1cf463983c0e3p-3,0x1.a3fdd2a5286c3p1
+sin,0x1.1cf463983c0e3p-3,-0x1.a3fdd2a5286c3p1
+sin,0x1.feb7948d224d8p-1,0x1.a44p0
+sin,-0x1.feb7948d224d8p-1,-0x1.a44p0
+sin,0x1.78801e3e11665p-1,0x1.a701ef3c7d54bp-1
+sin,-0x1.78801e3e11665p-1,-0x1.a701ef3c7d54bp-1
+sin,-0x1.fff11e871d59cp-1,0x1.a8c01fd43cp537
+sin,0x1.fff11e871d59cp-1,-0x1.a8c01fd43cp537
+sin,0x1.fdfa4366eb733p-1,0x1.a8e29b7602f3bp0
+sin,-0x1.fdfa4366eb733p-1,-0x1.a8e29b7602f3bp0
+sin,0x1.fde98b94e7948p-1,0x1.a94p0
+sin,-0x1.fde98b94e7948p-1,-0x1.a94p0
+sin,0x1.7931cba100008p-2,0x1.aa445fce93b82p2
+sin,-0x1.7931cba100008p-2,-0x1.aa445fce93b82p2
+sin,0x1.7af3f76c7a708p-1,0x1.aaa3fbc359fbep-1
+sin,-0x1.7af3f76c7a708p-1,-0x1.aaa3fbc359fbep-1
+sin,0x1.fd74e53ae32fdp-6,0x1.abdd3dbd4d86p119
+sin,-0x1.fd74e53ae32fdp-6,-0x1.abdd3dbd4d86p119
+sin,0x1.7d4a7bf183a34p-1,0x1.ae2165a0c9f8ep-1
+sin,-0x1.7d4a7bf183a34p-1,-0x1.ae2165a0c9f8ep-1
+sin,0x1.b81410edc79e1p-2,0x1.ae8dfefcfe13bp2
+sin,-0x1.b81410edc79e1p-2,-0x1.ae8dfefcfe13bp2
+sin,-0x1.ff751561dc50ap-2,0x1.b5597f950ee8cp29
+sin,0x1.ff751561dc50ap-2,-0x1.b5597f950ee8cp29
+sin,0x1.027d184afb198p-52,0x1.bab62ed655019p970
+sin,-0x1.027d184afb198p-52,-0x1.bab62ed655019p970
+sin,0x1.bc572e5e413e1p-10,0x1.bc573c4ffffffp-10
+sin,-0x1.bc572e5e413e1p-10,-0x1.bc573c4ffffffp-10
+sin,0x1.fb300f1e39afep-1,0x1.bef5cd25ab1adp9
+sin,-0x1.fb300f1e39afep-1,-0x1.bef5cd25ab1adp9
+sin,0x1.b1baaf622d3a3p-2,0x1.bfdf6df2a24c1p-2
+sin,-0x1.b1baaf622d3a3p-2,-0x1.bfdf6df2a24c1p-2
+sin,0x1.88fb762c35ce4p-1,0x1.bfffffdffffffp-1
+sin,-0x1.88fb762c35ce4p-1,-0x1.bfffffdffffffp-1
+sin,0x1.fe0ebff99ab8dp-1,0x1.c2b489520e376p920
+sin,-0x1.fe0ebff99ab8dp-1,-0x1.c2b489520e376p920
+sin,0x1.cf7f749f2a836p-4,0x1.c54beb008547p5
+sin,-0x1.cf7f749f2a836p-4,-0x1.c54beb008547p5
+sin,0x1.b6facf6658915p-2,0x1.c5ad34f5f472ap-2
+sin,-0x1.b6facf6658915p-2,-0x1.c5ad34f5f472ap-2
+sin,0x1.b851cd9b84ee7p-2,0x1.c728fc2f34bd6p-2
+sin,-0x1.b851cd9b84ee7p-2,-0x1.c728fc2f34bd6p-2
+sin,0x1.ba21b53cf2ff3p-2,0x1.c92b0f6105089p-2
+sin,-0x1.ba21b53cf2ff3p-2,-0x1.c92b0f6105089p-2
+sin,0x1.c9a2b68e30ec7p-5,0x1.c9dfbbe9ec704p-5
+sin,-0x1.c9a2b68e30ec7p-5,-0x1.c9dfbbe9ec704p-5
+sin,0x1.f370115c9ab35p-1,0x1.caf31bd7ee217p0
+sin,-0x1.f370115c9ab35p-1,-0x1.caf31bd7ee217p0
+sin,-0x1.dd38a1f1d289bp-54,0x1.cb44e86bc192bp648
+sin,0x1.dd38a1f1d289bp-54,-0x1.cb44e86bc192bp648
+sin,0x1.dd38a1f1d289bp-53,0x1.cb44e86bc192bp649
+sin,-0x1.dd38a1f1d289bp-53,-0x1.cb44e86bc192bp649
+sin,0x1.c7885aef33a95p-3,0x1.cb6p-3
+sin,-0x1.c7885aef33a95p-3,-0x1.cb6p-3
+sin,0x1.cd279aa6196b6p-4,0x1.ce2271d2f662fp-4
+sin,-0x1.cd279aa6196b6p-4,-0x1.ce2271d2f662fp-4
+sin,0x1.930b705f9fad2p-1,0x1.d0000000004p-1
+sin,-0x1.930b705f9fad2p-1,-0x1.d0000000004p-1
+sin,0x1.7ef24c8e67d9ap-1,0x1.d01p199
+sin,-0x1.7ef24c8e67d9ap-1,-0x1.d01p199
+sin,0x1.ffff124c001abp-1,0x1.d024ba6f953cfp1000
+sin,-0x1.ffff124c001abp-1,-0x1.d024ba6f953cfp1000
+sin,-0x1.f83a0983dd15dp-2,0x1.d4067c60f471ep1
+sin,0x1.f83a0983dd15dp-2,-0x1.d4067c60f471ep1
+sin,0x1.d79b9896ff555p-5,0x1.d7de6263bcaabp-5
+sin,-0x1.d79b9896ff555p-5,-0x1.d7de6263bcaabp-5
+sin,0x1.ed0b908a2983p-1,0x1.d800000002274p0
+sin,-0x1.ed0b908a2983p-1,-0x1.d800000002274p0
+sin,-0x1.f2c217cbc7dcdp-1,0x1.d96e058p488
+sin,0x1.f2c217cbc7dcdp-1,-0x1.d96e058p488
+sin,0x1.98dcd09337793p-1,0x1.d98c4c612718dp-1
+sin,-0x1.98dcd09337793p-1,-0x1.d98c4c612718dp-1
+sin,0x1.db3ba8775ca26p-5,0x1.db8p-5
+sin,-0x1.db3ba8775ca26p-5,-0x1.db8p-5
+sin,-0x1.9fee37697d582p-2,0x1.de386d6090303p200
+sin,0x1.9fee37697d582p-2,-0x1.de386d6090303p200
+sin,-0x1.5361ee6553188p-53,0x1.de5e5054e921bp35
+sin,0x1.5361ee6553188p-53,-0x1.de5e5054e921bp35
+sin,0x1.fec48d5e769ecp-1,0x1.df77ddf77ddf4p10
+sin,-0x1.fec48d5e769ecp-1,-0x1.df77ddf77ddf4p10
+sin,-0x1.2902a83d72632p-1,0x1.e1562b0448a86p1
+sin,0x1.2902a83d72632p-1,-0x1.e1562b0448a86p1
+sin,0x1.9e26c7bc96b69p-1,0x1.e2700cdc86635p-1
+sin,-0x1.9e26c7bc96b69p-1,-0x1.e2700cdc86635p-1
+sin,0x1.e6494911eedd2p-7,0x1.e64ddaf7bd73p-7
+sin,-0x1.e6494911eedd2p-7,-0x1.e64ddaf7bd73p-7
+sin,0x1.eb26c690bda25p-5,0x1.eb7239bca8afap-5
+sin,-0x1.eb26c690bda25p-5,-0x1.eb7239bca8afap-5
+sin,0x1.c73238790a4cfp-3,0x1.ef7b83f7bdef4p3
+sin,-0x1.c73238790a4cfp-3,-0x1.ef7b83f7bdef4p3
+sin,0x1.ed1b575acb8c8p-3,0x1.f20000000109bp-3
+sin,-0x1.ed1b575acb8c8p-3,-0x1.f20000000109bp-3
+sin,0x1.c1b50a56c8809p-1,0x1.f40ca67a9e8d7p9
+sin,-0x1.c1b50a56c8809p-1,-0x1.f40ca67a9e8d7p9
+sin,0x1.e321fea643a96p-2,0x1.f7224d2c7754p-2
+sin,-0x1.e321fea643a96p-2,-0x1.f7224d2c7754p-2
+sin,0x1.c1269b020a108p-3,0x1.f78a0d05e60e2p6
+sin,-0x1.c1269b020a108p-3,-0x1.f78a0d05e60e2p6
+sin,0x1.f76cae28a0775p-5,0x1.f7bdef7bdf073p-5
+sin,-0x1.f76cae28a0775p-5,-0x1.f7bdef7bdf073p-5
+sin,0x1.e42c139dc2054p-2,0x1.f8502d5955443p-2
+sin,-0x1.e42c139dc2054p-2,-0x1.f8502d5955443p-2
+sin,0x1.0fa749e07f64p-9,0x1.f8fc824d2693bp61
+sin,-0x1.0fa749e07f64p-9,-0x1.f8fc824d2693bp61
+sin,0x1.ffa80324e2d8fp-1,0x1.f8fffffffffffp2
+sin,-0x1.ffa80324e2d8fp-1,-0x1.f8fffffffffffp2
+sin,-0x1.7cdf79d5e37b8p-1,0x1.fd8p1
+sin,0x1.7cdf79d5e37b8p-1,-0x1.fd8p1
+sin,0x1.fd3f48847a1d1p-5,0x1.fd9364d936596p-5
+sin,-0x1.fd3f48847a1d1p-5,-0x1.fd9364d936596p-5
+sin,0x1.f93ad471d262fp-3,0x1.fe8p-3
+sin,-0x1.f93ad471d262fp-3,-0x1.fe8p-3
+sin,0x1.83b3062414974p-1,0x1.febb646e2ee57p13
+sin,-0x1.83b3062414974p-1,-0x1.febb646e2ee57p13
+sin,0x1.3b45bd7449775p-1,0x1.feeffffffffc6p995
+sin,-0x1.3b45bd7449775p-1,-0x1.feeffffffffc6p995
+sin,-0x1.eefb59d143646p-1,0x1.ff8ffffffffffp7
+sin,0x1.eefb59d143646p-1,-0x1.ff8ffffffffffp7
+sin,-0x1.56433f0c6bceep-1,0x1.ff8ffffffffffp870
+sin,0x1.56433f0c6bceep-1,-0x1.ff8ffffffffffp870
+sin,-0x1.930006246a6cp-2,0x1.ffcfff8p19
+sin,0x1.930006246a6cp-2,-0x1.ffcfff8p19
+sin,0x1.ded37a1f0aa6dp-1,0x1.ffcfff8p365
+sin,-0x1.ded37a1f0aa6dp-1,-0x1.ffcfff8p365
+sin,-0x1.93e4d96b621ep-1,0x1.ffcffffffff6cp720
+sin,0x1.93e4d96b621ep-1,-0x1.ffcffffffff6cp720
+sin,0x1.9068b90e42606p-1,0x1.ffcfffffffff9p320
+sin,-0x1.9068b90e42606p-1,-0x1.ffcfffffffff9p320
+sin,0x1.cf81642e7421cp-1,0x1.ffcffffffffffp12
+sin,-0x1.cf81642e7421cp-1,-0x1.ffcffffffffffp12
+sin,0x1.ffffffe61fe61p-1,0x1.ffcffffffffffp404
+sin,-0x1.ffffffe61fe61p-1,-0x1.ffcffffffffffp404
+sin,-0x1.406ee9ae91e17p-1,0x1.ffeffffffffccp995
+sin,0x1.406ee9ae91e17p-1,-0x1.ffeffffffffccp995
+sin,0x1.fa9f6ca0ec44ep-3,0x1.ffeffffffffffp-3
+sin,-0x1.fa9f6ca0ec44ep-3,-0x1.ffeffffffffffp-3
+sin,0x1.6b491db8b66d9p-4,0x1.ffeffffffffffp55
+sin,-0x1.6b491db8b66d9p-4,-0x1.ffeffffffffffp55
+sin,0x1.fb0ab102cb13p-1,0x1.ffeffffffffffp180
+sin,-0x1.fb0ab102cb13p-1,-0x1.ffeffffffffffp180
+sin,0x1.e4315ec04635dp-3,0x1.ffeffffffffffp706
+sin,-0x1.e4315ec04635dp-3,-0x1.ffeffffffffffp706
+sin,0x1.ffffc39997ef6p-1,0x1.fff1fffffffffp41
+sin,-0x1.ffffc39997ef6p-1,-0x1.fff1fffffffffp41
+sin,0x1.fff163992831fp-7,0x1.fff6b89ffffffp-7
+sin,-0x1.fff163992831fp-7,-0x1.fff6b89ffffffp-7
+sin,-0x1.d9757a05fcc43p-1,0x1.fffdffff0001fp105
+sin,0x1.d9757a05fcc43p-1,-0x1.fffdffff0001fp105
+sin,-0x1.83791fe63a17ap-1,0x1.ffff0c0000002p1
+sin,0x1.83791fe63a17ap-1,-0x1.ffff0c0000002p1
+sin,-0x1.d9d3a85acc50dp-1,0x1.ffffc00000055p150
+sin,0x1.d9d3a85acc50dp-1,-0x1.ffffc00000055p150
+sin,-0x1.f25d858dcdee7p-3,0x1.ffffe3fffffffp40
+sin,0x1.f25d858dcdee7p-3,-0x1.ffffe3fffffffp40
+sin,0x1.d18f7bfe557ecp-1,0x1.ffffefffcffaep0
+sin,-0x1.d18f7bfe557ecp-1,-0x1.ffffefffcffaep0
+sin,-0x1.bc14ebf6bfb52p-4,0x1.fffffbfffffffp228
+sin,0x1.bc14ebf6bfb52p-4,-0x1.fffffbfffffffp228
+sin,0x1.bb887a06f6c51p-3,0x1.fffffbfffffffp735
+sin,-0x1.bb887a06f6c51p-3,-0x1.fffffbfffffffp735
+sin,0x1.ffaaadef54e2fp-5,0x1.fffffefffffffp-5
+sin,-0x1.ffaaadef54e2fp-5,-0x1.fffffefffffffp-5
+sin,0x1.d4a3c62c5be09p-1,0x1.ffffff8p119
+sin,-0x1.d4a3c62c5be09p-1,-0x1.ffffff8p119
+sin,0x1.cec20f197703fp-3,0x1.ffffff8p192
+sin,-0x1.cec20f197703fp-3,-0x1.ffffff8p192
+sin,0x1.d37aadc7c8662p-2,0x1.ffffff8p543
+sin,-0x1.d37aadc7c8662p-2,-0x1.ffffff8p543
+sin,0x1.fa8d2a4d0a202p-1,0x1.ffffffc0018ffp2
+sin,-0x1.fa8d2a4d0a202p-1,-0x1.ffffffc0018ffp2
+sin,0x1.fa8d2a029f978p-1,0x1.ffffffffeffffp2
+sin,-0x1.fa8d2a029f978p-1,-0x1.ffffffffeffffp2
+sin,-0x1.2763f02a2d1eap-4,0x1.fffffffff825p943
+sin,0x1.2763f02a2d1eap-4,-0x1.fffffffff825p943
+sin,0x1.fcff128f77ddbp-1,0x1.fffffffffe09dp320
+sin,-0x1.fcff128f77ddbp-1,-0x1.fffffffffe09dp320
+sin,-0x1.fcc0bfedd84a6p-1,0x1.fffffffffe6e3p720
+sin,0x1.fcc0bfedd84a6p-1,-0x1.fffffffffe6e3p720
+sin,0x1.aed548f090c1ep-1,0x1.ffffffffffe7fp-1
+sin,-0x1.aed548f090c1ep-1,-0x1.ffffffffffe7fp-1
+sin,-0x1.f5e11def99d2bp-1,0x1.ffffffffffeffp250
+sin,0x1.f5e11def99d2bp-1,-0x1.ffffffffffeffp250
+sin,0x1.8a9cbf48fec9fp-1,0x1.fffffffffff78p920
+sin,-0x1.8a9cbf48fec9fp-1,-0x1.fffffffffff78p920
+sin,-0x1.7eba5894844ccp-3,0x1.fffffffffff83p150
+sin,0x1.7eba5894844ccp-3,-0x1.fffffffffff83p150
+sin,0x1.92c4f06d2cdd1p-1,0x1.fffffffffffd5p995
+sin,-0x1.92c4f06d2cdd1p-1,-0x1.fffffffffffd5p995
+sin,-0x1.3d5f7deb1d3bbp-1,0x1.fffffffffffe8p720
+sin,0x1.3d5f7deb1d3bbp-1,-0x1.fffffffffffe8p720
+sin,-0x1.91349b0ae90e5p-1,0x1.fffffffffffebp920
+sin,0x1.91349b0ae90e5p-1,-0x1.fffffffffffebp920
+sin,-0x1.837b9dddc1e88p-1,0x1.ffffffffffff1p1
+sin,0x1.837b9dddc1e88p-1,-0x1.ffffffffffff1p1
+sin,0x1.510e062e7fa2p-1,0x1.ffffffffffff1p245
+sin,-0x1.510e062e7fa2p-1,-0x1.ffffffffffff1p245
+sin,0x1.eaee8744b05e5p-2,0x1.ffffffffffff3p-2
+sin,-0x1.eaee8744b05e5p-2,-0x1.ffffffffffff3p-2
+sin,0x1.8a4dee8f40628p-1,0x1.ffffffffffff4p845
+sin,-0x1.8a4dee8f40628p-1,-0x1.ffffffffffff4p845
+sin,0x1.5118d6bbde07ep-1,0x1.ffffffffffff4p1020
+sin,-0x1.5118d6bbde07ep-1,-0x1.ffffffffffff4p1020
+sin,-0x1.5cd5c53cf30a9p-1,0x1.ffffffffffff8p616
+sin,0x1.5cd5c53cf30a9p-1,-0x1.ffffffffffff8p616
+sin,0x1.ffffa1f0d7dafp-1,0x1.ffffffffffffcp475
+sin,-0x1.ffffa1f0d7dafp-1,-0x1.ffffffffffffcp475
+sin,0x1.51e9d840106d7p-1,0x1.ffffffffffffep970
+sin,-0x1.51e9d840106d7p-1,-0x1.ffffffffffffep970
+sin,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+sin,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+sin,-0x0.0p0,-0x0.0p0
+sin,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+sin,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+sin,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022
+sin,0x1.0000000000001p-1022,0x1.0000000000001p-1022
+sin,-0x1.0p-1022,-0x1.0p-1022
+sin,0x1.0p-1022,0x1.0p-1022
+sin,-0x0.fffffffffffffp-1022,-0x0.fffffffffffffp-1022
+sin,0x0.fffffffffffffp-1022,0x0.fffffffffffffp-1022
+sin,0x0.fffffffffffffp-1022,0x0.fffffffffffffp-1022
+sin,-0x0.fffffffffffffp-1022,-0x0.fffffffffffffp-1022
+sin,0x1.0p-1022,0x1.0p-1022
+sin,-0x1.0p-1022,-0x1.0p-1022
+sin,0x1.0000000000001p-1022,0x1.0000000000001p-1022
+sin,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022
+sin,0x1.9999996de8ca2p-13,0x1.999999999999ap-13
+sin,-0x1.9999996de8ca2p-13,-0x1.999999999999ap-13
+sin,0x1.999998ead65b9p-12,0x1.999999999999ap-12
+sin,-0x1.999998ead65b9p-12,-0x1.999999999999ap-12
+sin,0x1.3333320c49bacp-11,0x1.3333333333334p-11
+sin,-0x1.3333320c49bacp-11,-0x1.3333333333334p-11
+sin,0x1.999996de8ca29p-11,0x1.999999999999ap-11
+sin,-0x1.999996de8ca29p-11,-0x1.999999999999ap-11
+sin,0x1.fffffaaaaaaefp-11,0x1.0p-10
+sin,-0x1.fffffaaaaaaefp-11,-0x1.0p-10
+sin,0x1.33332e978d553p-10,0x1.3333333333333p-10
+sin,-0x1.33332e978d553p-10,-0x1.3333333333333p-10
+sin,0x1.66665f1529bp-10,0x1.6666666666666p-10
+sin,-0x1.66665f1529bp-10,-0x1.6666666666666p-10
+sin,0x1.99998ead65cep-10,0x1.9999999999999p-10
+sin,-0x1.99998ead65cep-10,-0x1.9999999999999p-10
+sin,0x1.ccccbd3f7d15dp-10,0x1.cccccccccccccp-10
+sin,-0x1.ccccbd3f7d15dp-10,-0x1.cccccccccccccp-10
+sin,0x1.0665ae9c7b44fp-7,0x1.0666666666666p-7
+sin,-0x1.0665ae9c7b44fp-7,-0x1.0666666666666p-7
+sin,0x1.ccc8e97b59f62p-7,0x1.cccccccccccccp-7
+sin,-0x1.ccc8e97b59f62p-7,-0x1.cccccccccccccp-7
+sin,0x1.4993e8a8ff79bp-6,0x1.4999999999999p-6
+sin,-0x1.4993e8a8ff79bp-6,-0x1.4999999999999p-6
+sin,0x1.acc044c56db0ep-6,0x1.accccccccccccp-6
+sin,-0x1.acc044c56db0ep-6,-0x1.accccccccccccp-6
+sin,0x1.07f44d67cf41bp-5,0x1.08p-5
+sin,-0x1.07f44d67cf41bp-5,-0x1.08p-5
+sin,0x1.3985fe46f1c87p-5,0x1.399999999999ap-5
+sin,-0x1.3985fe46f1c87p-5,-0x1.399999999999ap-5
+sin,0x1.6b14bde93ac5fp-5,0x1.6b33333333334p-5
+sin,-0x1.6b14bde93ac5fp-5,-0x1.6b33333333334p-5
+sin,0x1.9ca0153ed8397p-5,0x1.9cccccccccccep-5
+sin,-0x1.9ca0153ed8397p-5,-0x1.9cccccccccccep-5
+sin,0x1.ce278d4027d34p-5,0x1.ce66666666666p-5
+sin,-0x1.ce278d4027d34p-5,-0x1.ce66666666666p-5
+sin,0x1.43c1e9c171a66p-1,0x1.5e7fc4369bdadp-1
+sin,-0x1.43c1e9c171a66p-1,-0x1.5e7fc4369bdadp-1
+sin,0x1.ee3d6bcea09cap-1,0x1.4e7fc4369bdadp0
+sin,-0x1.ee3d6bcea09cap-1,-0x1.4e7fc4369bdadp0
+sin,0x1.df8e22ea809d6p-1,0x1.edbfa651e9c84p0
+sin,-0x1.df8e22ea809d6p-1,-0x1.edbfa651e9c84p0
+sin,0x1.1d3479eac7ae3p-1,0x1.467fc4369bdadp1
+sin,-0x1.1d3479eac7ae3p-1,-0x1.467fc4369bdadp1
+sin,-0x1.ffeaaaeeee84bp-6,0x1.961fb54442d18p1
+sin,0x1.ffeaaaeeee84bp-6,-0x1.961fb54442d18p1
+sin,-0x1.3734d32d49bd1p-1,0x1.e5bfa651e9c83p1
+sin,0x1.3734d32d49bd1p-1,-0x1.e5bfa651e9c83p1
+sin,-0x1.e9d25d19911e2p-1,0x1.1aafcbafc85f7p2
+sin,0x1.e9d25d19911e2p-1,-0x1.1aafcbafc85f7p2
+sin,-0x1.e4ecdc5a4e466p-1,0x1.427fc4369bdadp2
+sin,0x1.e4ecdc5a4e466p-1,-0x1.427fc4369bdadp2
+sin,-0x1.2a59f10344262p-1,0x1.6a4fbcbd6f562p2
+sin,0x1.2a59f10344262p-1,-0x1.6a4fbcbd6f562p2
+sin,-0x1.26312443bd35fp-1,0x1.6af2eff0a2896p2
+sin,0x1.26312443bd35fp-1,-0x1.6af2eff0a2896p2
+sin,-0x1.e18e660a5e2fbp-1,0x1.43c62a9d02414p2
+sin,0x1.e18e660a5e2fbp-1,-0x1.43c62a9d02414p2
+sin,-0x1.ee0e83a0198b7p-1,0x1.1c99654961f92p2
+sin,0x1.ee0e83a0198b7p-1,-0x1.1c99654961f92p2
+sin,-0x1.4727747338e46p-1,0x1.ead93feb8361fp1
+sin,0x1.4727747338e46p-1,-0x1.ead93feb8361fp1
+sin,-0x1.4ba2f75dda5fep-4,0x1.9c7fb54442d1ap1
+sin,0x1.4ba2f75dda5fep-4,-0x1.9c7fb54442d1ap1
+sin,0x1.034c4d633b4efp-1,0x1.4e262a9d02415p1
+sin,-0x1.034c4d633b4efp-1,-0x1.4e262a9d02415p1
+sin,0x1.d1e4cde2f3945p-1,0x1.ff993feb8362p0
+sin,-0x1.d1e4cde2f3945p-1,-0x1.ff993feb8362p0
+sin,0x1.f750235c94992p-1,0x1.62e62a9d02416p0
+sin,-0x1.f750235c94992p-1,-0x1.62e62a9d02416p0
+sin,0x1.65f7d571279b1p-1,0x1.8c662a9d02419p-1
+sin,-0x1.65f7d571279b1p-1,-0x1.8c662a9d02419p-1
+sin,-0x1.fe043f57369d7p-1,-0x1.a8aa1d11c44ffp0
+sin,0x1.fe043f57369d7p-1,0x1.a8aa1d11c44ffp0
+sin,-0x1.fff18f24f3e4cp-1,-0x1.95ec8b9e03d54p0
+sin,0x1.fff18f24f3e4cp-1,0x1.95ec8b9e03d54p0
+sin,-0x1.ff20d961624e7p-1,-0x1.832efa2a435a9p0
+sin,0x1.ff20d961624e7p-1,0x1.832efa2a435a9p0
+sin,-0x1.fb933c40107fdp-1,-0x1.707168b682dfep0
+sin,0x1.fb933c40107fdp-1,0x1.707168b682dfep0
+sin,-0x1.f54d971881ad7p-1,-0x1.5db3d742c2653p0
+sin,0x1.f54d971881ad7p-1,0x1.5db3d742c2653p0
+sin,-0x1.ec5883b7b6cf5p-1,-0x1.4af645cf01ea8p0
+sin,0x1.ec5883b7b6cf5p-1,0x1.4af645cf01ea8p0
+sin,-0x1.e0c04a94e1731p-1,-0x1.3838b45b416fdp0
+sin,0x1.e0c04a94e1731p-1,0x1.3838b45b416fdp0
+sin,-0x1.d294d1f96c7ecp-1,-0x1.257b22e780f52p0
+sin,0x1.d294d1f96c7ecp-1,0x1.257b22e780f52p0
+sin,-0x1.c1e9883373d7fp-1,-0x1.12bd9173c07abp0
+sin,0x1.c1e9883373d7fp-1,0x1.12bd9173c07abp0
+sin,-0x1.a2c289d9d055bp-1,-0x1.ea5c3ed5b385p-1
+sin,0x1.a2c289d9d055bp-1,0x1.ea5c3ed5b385p-1
+sin,-0x1.95f05257dbcb6p-1,-0x1.d4b87dab670ap-1
+sin,0x1.95f05257dbcb6p-1,0x1.d4b87dab670ap-1
+sin,-0x1.88647f26a6e0fp-1,-0x1.bf14bc811a8fp-1
+sin,0x1.88647f26a6e0fp-1,0x1.bf14bc811a8fp-1
+sin,-0x1.7a2541dfd4e75p-1,-0x1.a970fb56ce14p-1
+sin,0x1.7a2541dfd4e75p-1,0x1.a970fb56ce14p-1
+sin,-0x1.6b391e25bc26dp-1,-0x1.93cd3a2c8199p-1
+sin,0x1.6b391e25bc26dp-1,0x1.93cd3a2c8199p-1
+sin,-0x1.5ba6e6a8e7065p-1,-0x1.7e297902351ep-1
+sin,0x1.5ba6e6a8e7065p-1,0x1.7e297902351ep-1
+sin,-0x1.4b75ba096fa55p-1,-0x1.6885b7d7e8a3p-1
+sin,0x1.4b75ba096fa55p-1,0x1.6885b7d7e8a3p-1
+sin,-0x1.3aacff95a3123p-1,-0x1.52e1f6ad9c28p-1
+sin,0x1.3aacff95a3123p-1,0x1.52e1f6ad9c28p-1
+sin,-0x1.295463e769285p-1,-0x1.3d3e35834fadp-1
+sin,0x1.295463e769285p-1,0x1.3d3e35834fadp-1
+sin,-0x1.fc769b77e5885p-2,-0x1.0a0b02501c799p-1
+sin,0x1.fc769b77e5885p-2,0x1.0a0b02501c799p-1
+sin,-0x1.c853c78462de4p-2,-0x1.d8f7208e6b82cp-2
+sin,0x1.c853c78462de4p-2,0x1.d8f7208e6b82cp-2
+sin,-0x1.92aba90aaf272p-2,-0x1.9dd83c7c9e126p-2
+sin,0x1.92aba90aaf272p-2,0x1.9dd83c7c9e126p-2
+sin,-0x1.5bac064658f39p-2,-0x1.62b9586ad0a2p-2
+sin,0x1.5bac064658f39p-2,0x1.62b9586ad0a2p-2
+sin,-0x1.2383ca8078e58p-2,-0x1.279a74590331ap-2
+sin,0x1.2383ca8078e58p-2,0x1.279a74590331ap-2
+sin,-0x1.d4c5bc11d2372p-3,-0x1.d8f7208e6b829p-3
+sin,0x1.d4c5bc11d2372p-3,0x1.d8f7208e6b829p-3
+sin,-0x1.60f3faaf43024p-3,-0x1.62b9586ad0a1ep-3
+sin,0x1.60f3faaf43024p-3,0x1.62b9586ad0a1ep-3
+sin,-0x1.d7ea3de45a9d6p-4,-0x1.d8f7208e6b826p-4
+sin,0x1.d7ea3de45a9d6p-4,0x1.d8f7208e6b826p-4
+sin,-0x1.d8b3df489987ap-5,-0x1.d8f7208e6b82dp-5
+sin,0x1.d8b3df489987ap-5,0x1.d8f7208e6b82dp-5
+sin,0x1.d8b3df489987ap-5,0x1.d8f7208e6b82dp-5
+sin,-0x1.d8b3df489987ap-5,-0x1.d8f7208e6b82dp-5
+sin,0x1.d7ea3de45a9ddp-4,0x1.d8f7208e6b82dp-4
+sin,-0x1.d7ea3de45a9ddp-4,-0x1.d8f7208e6b82dp-4
+sin,0x1.60f3faaf43028p-3,0x1.62b9586ad0a22p-3
+sin,-0x1.60f3faaf43028p-3,-0x1.62b9586ad0a22p-3
+sin,0x1.d4c5bc11d2376p-3,0x1.d8f7208e6b82dp-3
+sin,-0x1.d4c5bc11d2376p-3,-0x1.d8f7208e6b82dp-3
+sin,0x1.2383ca8078e5ap-2,0x1.279a74590331cp-2
+sin,-0x1.2383ca8078e5ap-2,-0x1.279a74590331cp-2
+sin,0x1.5bac064658f3bp-2,0x1.62b9586ad0a22p-2
+sin,-0x1.5bac064658f3bp-2,-0x1.62b9586ad0a22p-2
+sin,0x1.92aba90aaf274p-2,0x1.9dd83c7c9e128p-2
+sin,-0x1.92aba90aaf274p-2,-0x1.9dd83c7c9e128p-2
+sin,0x1.c853c78462de6p-2,0x1.d8f7208e6b82ep-2
+sin,-0x1.c853c78462de6p-2,-0x1.d8f7208e6b82ep-2
+sin,0x1.fc769b77e5885p-2,0x1.0a0b02501c799p-1
+sin,-0x1.fc769b77e5885p-2,-0x1.0a0b02501c799p-1
+sin,0x1.295463e769281p-1,0x1.3d3e35834faccp-1
+sin,-0x1.295463e769281p-1,-0x1.3d3e35834faccp-1
+sin,0x1.3aacff95a312p-1,0x1.52e1f6ad9c27cp-1
+sin,-0x1.3aacff95a312p-1,-0x1.52e1f6ad9c27cp-1
+sin,0x1.4b75ba096fa52p-1,0x1.6885b7d7e8a2cp-1
+sin,-0x1.4b75ba096fa52p-1,-0x1.6885b7d7e8a2cp-1
+sin,0x1.5ba6e6a8e7062p-1,0x1.7e297902351dcp-1
+sin,-0x1.5ba6e6a8e7062p-1,-0x1.7e297902351dcp-1
+sin,0x1.6b391e25bc26ap-1,0x1.93cd3a2c8198cp-1
+sin,-0x1.6b391e25bc26ap-1,-0x1.93cd3a2c8198cp-1
+sin,0x1.7a2541dfd4e73p-1,0x1.a970fb56ce13cp-1
+sin,-0x1.7a2541dfd4e73p-1,-0x1.a970fb56ce13cp-1
+sin,0x1.88647f26a6e0dp-1,0x1.bf14bc811a8ecp-1
+sin,-0x1.88647f26a6e0dp-1,-0x1.bf14bc811a8ecp-1
+sin,0x1.95f05257dbcb4p-1,0x1.d4b87dab6709cp-1
+sin,-0x1.95f05257dbcb4p-1,-0x1.d4b87dab6709cp-1
+sin,0x1.a2c289d9d0558p-1,0x1.ea5c3ed5b384cp-1
+sin,-0x1.a2c289d9d0558p-1,-0x1.ea5c3ed5b384cp-1
+sin,0x1.c1e9883373d7fp-1,0x1.12bd9173c07abp0
+sin,-0x1.c1e9883373d7fp-1,-0x1.12bd9173c07abp0
+sin,0x1.d294d1f96c7efp-1,0x1.257b22e780f56p0
+sin,-0x1.d294d1f96c7efp-1,-0x1.257b22e780f56p0
+sin,0x1.e0c04a94e1733p-1,0x1.3838b45b41701p0
+sin,-0x1.e0c04a94e1733p-1,-0x1.3838b45b41701p0
+sin,0x1.ec5883b7b6cf7p-1,0x1.4af645cf01eacp0
+sin,-0x1.ec5883b7b6cf7p-1,-0x1.4af645cf01eacp0
+sin,0x1.f54d971881ad8p-1,0x1.5db3d742c2657p0
+sin,-0x1.f54d971881ad8p-1,-0x1.5db3d742c2657p0
+sin,0x1.fb933c40107fep-1,0x1.707168b682e02p0
+sin,-0x1.fb933c40107fep-1,-0x1.707168b682e02p0
+sin,0x1.ff20d961624e7p-1,0x1.832efa2a435adp0
+sin,-0x1.ff20d961624e7p-1,-0x1.832efa2a435adp0
+sin,0x1.fff18f24f3e4bp-1,0x1.95ec8b9e03d58p0
+sin,-0x1.fff18f24f3e4bp-1,-0x1.95ec8b9e03d58p0
+sin,0x1.fe043f57369d7p-1,0x1.a8aa1d11c44ffp0
+sin,-0x1.fe043f57369d7p-1,-0x1.a8aa1d11c44ffp0
+sin,0x1.b3d3695acc413p-1,0x1.04aff6d330942p0
+sin,-0x1.b3d3695acc413p-1,-0x1.04aff6d330942p0
+sin,0x1.b3d41972dc806p-1,0x1.04b09e98dcdb4p0
+sin,-0x1.b3d41972dc806p-1,-0x1.04b09e98dcdb4p0
+sin,0x1.b3d4c98a318fbp-1,0x1.04b1465e89226p0
+sin,-0x1.b3d4c98a318fbp-1,-0x1.04b1465e89226p0
+sin,0x1.b3d579a0cb6eep-1,0x1.04b1ee2435698p0
+sin,-0x1.b3d579a0cb6eep-1,-0x1.04b1ee2435698p0
+sin,0x1.b3d629b6aa1dap-1,0x1.04b295e9e1b0ap0
+sin,-0x1.b3d629b6aa1dap-1,-0x1.04b295e9e1b0ap0
+sin,0x1.b3d6d9cbcd9bap-1,0x1.04b33daf8df7cp0
+sin,-0x1.b3d6d9cbcd9bap-1,-0x1.04b33daf8df7cp0
+sin,0x1.b3d789e035e89p-1,0x1.04b3e5753a3eep0
+sin,-0x1.b3d789e035e89p-1,-0x1.04b3e5753a3eep0
+sin,0x1.b3d839f3e3043p-1,0x1.04b48d3ae686p0
+sin,-0x1.b3d839f3e3043p-1,-0x1.04b48d3ae686p0
+sin,0x1.b3d8ea06d4eep-1,0x1.04b5350092ccfp0
+sin,-0x1.b3d8ea06d4eep-1,-0x1.04b5350092ccfp0
+sin,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+sin,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+sin,-0x0.0p0,-0x0.0p0
+sin,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+sin,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+sin,0x1.1773d561fd506p-1,0x1.279a74590331bp-1
+sin,-0x1.1773d561fd506p-1,-0x1.279a74590331bp-1
+sin,0x1.1773d561fd507p-1,0x1.279a74590331cp-1
+sin,-0x1.1773d561fd507p-1,-0x1.279a74590331cp-1
+sin,0x1.1773d561fd508p-1,0x1.279a74590331dp-1
+sin,-0x1.1773d561fd508p-1,-0x1.279a74590331dp-1
+sin,0x1.f95b8e7107419p-1,0x1.bb67ae8584ca9p0
+sin,-0x1.f95b8e7107419p-1,-0x1.bb67ae8584ca9p0
+sin,0x1.f95b8e7107418p-1,0x1.bb67ae8584caap0
+sin,-0x1.f95b8e7107418p-1,-0x1.bb67ae8584caap0
+sin,0x1.f95b8e7107418p-1,0x1.bb67ae8584cabp0
+sin,-0x1.f95b8e7107418p-1,-0x1.bb67ae8584cabp0
+sin,0x1.b1d8305321616p-2,0x1.bffffffffffffp-2
+sin,-0x1.b1d8305321616p-2,-0x1.bffffffffffffp-2
+sin,0x1.b1d8305321617p-2,0x1.cp-2
+sin,-0x1.b1d8305321617p-2,-0x1.cp-2
+sin,0x1.b1d8305321617p-2,0x1.c000000000001p-2
+sin,-0x1.b1d8305321617p-2,-0x1.c000000000001p-2
+sin,0x1.44eb381cf386ap-1,0x1.5ffffffffffffp-1
+sin,-0x1.44eb381cf386ap-1,-0x1.5ffffffffffffp-1
+sin,0x1.44eb381cf386bp-1,0x1.6p-1
+sin,-0x1.44eb381cf386bp-1,-0x1.6p-1
+sin,0x1.44eb381cf386cp-1,0x1.6000000000001p-1
+sin,-0x1.44eb381cf386cp-1,-0x1.6000000000001p-1
+sin,0x1.dad902fa8ac86p-1,0x1.2ffffffffffffp0
+sin,-0x1.dad902fa8ac86p-1,-0x1.2ffffffffffffp0
+sin,0x1.dad902fa8ac87p-1,0x1.3p0
+sin,-0x1.dad902fa8ac87p-1,-0x1.3p0
+sin,0x1.dad902fa8ac88p-1,0x1.3000000000001p0
+sin,-0x1.dad902fa8ac88p-1,-0x1.3000000000001p0
+sin,0x1.4b707a7acdedp-1,0x1.37fffffffffffp1
+sin,-0x1.4b707a7acdedp-1,-0x1.37fffffffffffp1
+sin,0x1.4b707a7acdecdp-1,0x1.38p1
+sin,-0x1.4b707a7acdecdp-1,-0x1.38p1
+sin,0x1.4b707a7acdecap-1,0x1.3800000000001p1
+sin,-0x1.4b707a7acdecap-1,-0x1.3800000000001p1
+sin,0x1.066e7eb76f5c6p-4,0x1.069c8b46b3792p-4
+sin,-0x1.066e7eb76f5c6p-4,-0x1.069c8b46b3792p-4
+sin,0x1.05e4761ab8d8fp-3,0x1.069c8b46b3792p-3
+sin,-0x1.05e4761ab8d8fp-3,-0x1.069c8b46b3792p-3
+sin,0x1.877e2cd4f6fdap-3,0x1.89ead0ea0d35bp-3
+sin,-0x1.877e2cd4f6fdap-3,-0x1.89ead0ea0d35bp-3
+sin,0x1.03be06f97cbeep-2,0x1.069c8b46b3792p-2
+sin,-0x1.03be06f97cbeep-2,-0x1.069c8b46b3792p-2
+sin,0x1.42abba8c72fbcp-2,0x1.4843ae1860576p-2
+sin,-0x1.42abba8c72fbcp-2,-0x1.4843ae1860576p-2
+sin,0x1.8045fe64e62dcp-2,0x1.89ead0ea0d35ap-2
+sin,-0x1.8045fe64e62dcp-2,-0x1.89ead0ea0d35ap-2
+sin,0x1.bc4c04d71abbfp-2,0x1.cb91f3bbba13ep-2
+sin,-0x1.bc4c04d71abbfp-2,-0x1.cb91f3bbba13ep-2
+sin,0x1.f67ea975b86ap-2,0x1.069c8b46b3791p-1
+sin,-0x1.f67ea975b86ap-2,-0x1.069c8b46b3791p-1
+sin,0x1.175059bf0d425p-1,0x1.27701caf89e83p-1
+sin,-0x1.175059bf0d425p-1,-0x1.27701caf89e83p-1
+sin,0x1.323b8b1fb4ba2p-1,0x1.4843ae1860575p-1
+sin,-0x1.323b8b1fb4ba2p-1,-0x1.4843ae1860575p-1
+sin,0x1.4be4979c5efb3p-1,0x1.69173f8136c67p-1
+sin,-0x1.4be4979c5efb3p-1,-0x1.69173f8136c67p-1
+sin,0x1.643080d67acc1p-1,0x1.89ead0ea0d359p-1
+sin,-0x1.643080d67acc1p-1,-0x1.89ead0ea0d359p-1
+sin,0x1.7b05b7b6c612ep-1,0x1.aabe6252e3a4bp-1
+sin,-0x1.7b05b7b6c612ep-1,-0x1.aabe6252e3a4bp-1
+sin,0x1.904c37505de49p-1,0x1.cb91f3bbba13dp-1
+sin,-0x1.904c37505de49p-1,-0x1.cb91f3bbba13dp-1
+sin,0x1.a3ed9e252938ap-1,0x1.ec6585249082fp-1
+sin,-0x1.a3ed9e252938ap-1,-0x1.ec6585249082fp-1
+sin,0x1.b5d545b109bf9p-1,0x1.069c8b46b3791p0
+sin,-0x1.b5d545b109bf9p-1,-0x1.069c8b46b3791p0
+sin,0x1.c5f058230e7fdp-1,0x1.170653fb1eb0ap0
+sin,-0x1.c5f058230e7fdp-1,-0x1.170653fb1eb0ap0
+sin,0x1.d42de42dce134p-1,0x1.27701caf89e83p0
+sin,-0x1.d42de42dce134p-1,-0x1.27701caf89e83p0
+sin,0x1.e07eeeda109cbp-1,0x1.37d9e563f51fcp0
+sin,-0x1.e07eeeda109cbp-1,-0x1.37d9e563f51fcp0
+sin,0x1.ead6834909b93p-1,0x1.4843ae1860575p0
+sin,-0x1.ead6834909b93p-1,-0x1.4843ae1860575p0
+sin,0x1.f329c0558e968p-1,0x1.58ad76cccb8eep0
+sin,-0x1.f329c0558e968p-1,-0x1.58ad76cccb8eep0
+sin,0x1.f96fe405f1ac6p-1,0x1.69173f8136c67p0
+sin,-0x1.f96fe405f1ac6p-1,-0x1.69173f8136c67p0
+sin,0x1.fda254c27a01fp-1,0x1.79810835a1fep0
+sin,-0x1.fda254c27a01fp-1,-0x1.79810835a1fep0
+sin,0x1.ffbca846c4fcap-1,0x1.89ead0ea0d359p0
+sin,-0x1.ffbca846c4fcap-1,-0x1.89ead0ea0d359p0
+sin,0x1.ffbca846c4fcap-1,0x1.9a54999e786d2p0
+sin,-0x1.ffbca846c4fcap-1,-0x1.9a54999e786d2p0
+sin,0x1.fda254c27a02p-1,0x1.aabe6252e3a4bp0
+sin,-0x1.fda254c27a02p-1,-0x1.aabe6252e3a4bp0
+sin,0x1.f96fe405f1ac8p-1,0x1.bb282b074edc4p0
+sin,-0x1.f96fe405f1ac8p-1,-0x1.bb282b074edc4p0
+sin,0x1.f329c0558e96ap-1,0x1.cb91f3bbba13dp0
+sin,-0x1.f329c0558e96ap-1,-0x1.cb91f3bbba13dp0
+sin,0x1.ead6834909b96p-1,0x1.dbfbbc70254b6p0
+sin,-0x1.ead6834909b96p-1,-0x1.dbfbbc70254b6p0
+sin,0x1.e07eeeda109cfp-1,0x1.ec6585249082fp0
+sin,-0x1.e07eeeda109cfp-1,-0x1.ec6585249082fp0
+sin,0x1.d42de42dce139p-1,0x1.fccf4dd8fbba8p0
+sin,-0x1.d42de42dce139p-1,-0x1.fccf4dd8fbba8p0
+sin,0x1.c5f058230e801p-1,0x1.069c8b46b3791p1
+sin,-0x1.c5f058230e801p-1,-0x1.069c8b46b3791p1
+sin,0x1.b5d545b109bfdp-1,0x1.0ed16fa0e914ep1
+sin,-0x1.b5d545b109bfdp-1,-0x1.0ed16fa0e914ep1
+sin,0x1.a3ed9e252938dp-1,0x1.170653fb1eb0bp1
+sin,-0x1.a3ed9e252938dp-1,-0x1.170653fb1eb0bp1
+sin,0x1.904c37505de4cp-1,0x1.1f3b3855544c8p1
+sin,-0x1.904c37505de4cp-1,-0x1.1f3b3855544c8p1
+sin,0x1.7b05b7b6c613p-1,0x1.27701caf89e85p1
+sin,-0x1.7b05b7b6c613p-1,-0x1.27701caf89e85p1
+sin,0x1.643080d67acc1p-1,0x1.2fa50109bf842p1
+sin,-0x1.643080d67acc1p-1,-0x1.2fa50109bf842p1
+sin,0x1.4be4979c5efb2p-1,0x1.37d9e563f51ffp1
+sin,-0x1.4be4979c5efb2p-1,-0x1.37d9e563f51ffp1
+sin,0x1.323b8b1fb4b9fp-1,0x1.400ec9be2abbcp1
+sin,-0x1.323b8b1fb4b9fp-1,-0x1.400ec9be2abbcp1
+sin,0x1.175059bf0d42p-1,0x1.4843ae1860579p1
+sin,-0x1.175059bf0d42p-1,-0x1.4843ae1860579p1
+sin,0x1.f67ea975b8692p-2,0x1.5078927295f36p1
+sin,-0x1.f67ea975b8692p-2,-0x1.5078927295f36p1
+sin,0x1.bc4c04d71abadp-2,0x1.58ad76cccb8f3p1
+sin,-0x1.bc4c04d71abadp-2,-0x1.58ad76cccb8f3p1
+sin,0x1.8045fe64e62c6p-2,0x1.60e25b27012bp1
+sin,-0x1.8045fe64e62c6p-2,-0x1.60e25b27012bp1
+sin,0x1.42abba8c72fa1p-2,0x1.69173f8136c6dp1
+sin,-0x1.42abba8c72fa1p-2,-0x1.69173f8136c6dp1
+sin,0x1.03be06f97cbdp-2,0x1.714c23db6c62ap1
+sin,-0x1.03be06f97cbdp-2,-0x1.714c23db6c62ap1
+sin,0x1.877e2cd4f6f94p-3,0x1.79810835a1fe7p1
+sin,-0x1.877e2cd4f6f94p-3,-0x1.79810835a1fe7p1
+sin,0x1.05e4761ab8d42p-3,0x1.81b5ec8fd79a4p1
+sin,-0x1.05e4761ab8d42p-3,-0x1.81b5ec8fd79a4p1
+sin,0x1.066e7eb76f5ddp-4,0x1.89ead0ea0d35bp1
+sin,-0x1.066e7eb76f5ddp-4,-0x1.89ead0ea0d35bp1
+sin,0x1.03be06f97cbf1p-2,-0x1.81b5ec8fd799fp2
+sin,-0x1.03be06f97cbf1p-2,0x1.81b5ec8fd799fp2
+sin,0x1.f67ea975b86a2p-2,-0x1.714c23db6c626p2
+sin,-0x1.f67ea975b86a2p-2,0x1.714c23db6c626p2
+sin,0x1.643080d67acc2p-1,-0x1.60e25b27012adp2
+sin,-0x1.643080d67acc2p-1,0x1.60e25b27012adp2
+sin,0x1.b5d545b109bf9p-1,-0x1.5078927295f34p2
+sin,-0x1.b5d545b109bf9p-1,0x1.5078927295f34p2
+sin,0x1.ead6834909b93p-1,-0x1.400ec9be2abbbp2
+sin,-0x1.ead6834909b93p-1,0x1.400ec9be2abbbp2
+sin,0x1.ffbca846c4fcap-1,-0x1.2fa50109bf842p2
+sin,-0x1.ffbca846c4fcap-1,0x1.2fa50109bf842p2
+sin,0x1.f329c0558e96ap-1,-0x1.1f3b3855544c9p2
+sin,-0x1.f329c0558e96ap-1,0x1.1f3b3855544c9p2
+sin,0x1.c5f058230e802p-1,-0x1.0ed16fa0e915p2
+sin,-0x1.c5f058230e802p-1,0x1.0ed16fa0e915p2
+sin,0x1.7b05b7b6c6136p-1,-0x1.fccf4dd8fbbaep1
+sin,-0x1.7b05b7b6c6136p-1,0x1.fccf4dd8fbbaep1
+sin,0x1.175059bf0d42fp-1,-0x1.dbfbbc70254bcp1
+sin,-0x1.175059bf0d42fp-1,0x1.dbfbbc70254bcp1
+sin,0x1.42abba8c72fd2p-2,-0x1.bb282b074edcap1
+sin,-0x1.42abba8c72fd2p-2,0x1.bb282b074edcap1
+sin,0x1.066e7eb76f62bp-4,-0x1.9a54999e786d8p1
+sin,-0x1.066e7eb76f62bp-4,0x1.9a54999e786d8p1
+sin,-0x1.877e2cd4f6fa4p-3,-0x1.79810835a1fe6p1
+sin,0x1.877e2cd4f6fa4p-3,0x1.79810835a1fe6p1
+sin,-0x1.bc4c04d71aba6p-2,-0x1.58ad76cccb8f4p1
+sin,0x1.bc4c04d71aba6p-2,0x1.58ad76cccb8f4p1
+sin,-0x1.4be4979c5efa8p-1,-0x1.37d9e563f5202p1
+sin,0x1.4be4979c5efa8p-1,0x1.37d9e563f5202p1
+sin,-0x1.a3ed9e2529382p-1,-0x1.170653fb1eb1p1
+sin,0x1.a3ed9e2529382p-1,0x1.170653fb1eb1p1
+sin,-0x1.e07eeeda109c6p-1,-0x1.ec6585249083cp0
+sin,0x1.e07eeeda109c6p-1,0x1.ec6585249083cp0
+sin,-0x1.fda254c27a01ep-1,-0x1.aabe6252e3a58p0
+sin,0x1.fda254c27a01ep-1,0x1.aabe6252e3a58p0
+sin,-0x1.f96fe405f1acap-1,-0x1.69173f8136c74p0
+sin,0x1.f96fe405f1acap-1,0x1.69173f8136c74p0
+sin,-0x1.d42de42dce13fp-1,-0x1.27701caf89e9p0
+sin,0x1.d42de42dce13fp-1,0x1.27701caf89e9p0
+sin,-0x1.904c37505de59p-1,-0x1.cb91f3bbba157p-1
+sin,0x1.904c37505de59p-1,0x1.cb91f3bbba157p-1
+sin,-0x1.323b8b1fb4bb6p-1,-0x1.4843ae186058ep-1
+sin,0x1.323b8b1fb4bb6p-1,0x1.4843ae186058ep-1
+sin,-0x1.8045fe64e6309p-2,-0x1.89ead0ea0d38ap-2
+sin,0x1.8045fe64e6309p-2,0x1.89ead0ea0d38ap-2
+sin,-0x1.05e4761ab8decp-3,-0x1.069c8b46b37fp-3
+sin,0x1.05e4761ab8decp-3,0x1.069c8b46b37fp-3
+sin,0x1.05e4761ab8d32p-3,0x1.069c8b46b3734p-3
+sin,-0x1.05e4761ab8d32p-3,-0x1.069c8b46b3734p-3
+sin,0x1.8045fe64e62b2p-2,0x1.89ead0ea0d32cp-2
+sin,-0x1.8045fe64e62b2p-2,-0x1.89ead0ea0d32cp-2
+sin,0x1.323b8b1fb4b9p-1,0x1.4843ae186055fp-1
+sin,-0x1.323b8b1fb4b9p-1,-0x1.4843ae186055fp-1
+sin,0x1.904c37505de3cp-1,0x1.cb91f3bbba128p-1
+sin,-0x1.904c37505de3cp-1,-0x1.cb91f3bbba128p-1
+sin,0x1.d42de42dce12bp-1,0x1.27701caf89e78p0
+sin,-0x1.d42de42dce12bp-1,-0x1.27701caf89e78p0
+sin,0x1.f96fe405f1ac2p-1,0x1.69173f8136c5cp0
+sin,-0x1.f96fe405f1ac2p-1,-0x1.69173f8136c5cp0
+sin,0x1.fda254c27a022p-1,0x1.aabe6252e3a4p0
+sin,-0x1.fda254c27a022p-1,-0x1.aabe6252e3a4p0
+sin,0x1.e07eeeda109d7p-1,0x1.ec65852490824p0
+sin,-0x1.e07eeeda109d7p-1,-0x1.ec65852490824p0
+sin,0x1.a3ed9e252939ep-1,0x1.170653fb1eb04p1
+sin,-0x1.a3ed9e252939ep-1,-0x1.170653fb1eb04p1
+sin,0x1.4be4979c5efcdp-1,0x1.37d9e563f51f6p1
+sin,-0x1.4be4979c5efcdp-1,-0x1.37d9e563f51f6p1
+sin,0x1.bc4c04d71abfcp-2,0x1.58ad76cccb8e8p1
+sin,-0x1.bc4c04d71abfcp-2,-0x1.58ad76cccb8e8p1
+sin,0x1.877e2cd4f7061p-3,0x1.79810835a1fdap1
+sin,-0x1.877e2cd4f7061p-3,-0x1.79810835a1fdap1
+sin,-0x1.066e7eb76f4acp-4,0x1.9a54999e786ccp1
+sin,0x1.066e7eb76f4acp-4,-0x1.9a54999e786ccp1
+sin,-0x1.42abba8c72f77p-2,0x1.bb282b074edbep1
+sin,0x1.42abba8c72f77p-2,-0x1.bb282b074edbep1
+sin,-0x1.175059bf0d407p-1,0x1.dbfbbc70254bp1
+sin,0x1.175059bf0d407p-1,-0x1.dbfbbc70254bp1
+sin,-0x1.7b05b7b6c6116p-1,0x1.fccf4dd8fbba2p1
+sin,0x1.7b05b7b6c6116p-1,-0x1.fccf4dd8fbba2p1
+sin,-0x1.c5f058230e7ecp-1,0x1.0ed16fa0e914ap2
+sin,0x1.c5f058230e7ecp-1,-0x1.0ed16fa0e914ap2
+sin,-0x1.f329c0558e96p-1,0x1.1f3b3855544c3p2
+sin,0x1.f329c0558e96p-1,-0x1.1f3b3855544c3p2
+sin,-0x1.ffbca846c4fcbp-1,0x1.2fa50109bf83cp2
+sin,0x1.ffbca846c4fcbp-1,-0x1.2fa50109bf83cp2
+sin,-0x1.ead6834909ba1p-1,0x1.400ec9be2abb5p2
+sin,0x1.ead6834909ba1p-1,-0x1.400ec9be2abb5p2
+sin,-0x1.b5d545b109c12p-1,0x1.5078927295f2ep2
+sin,0x1.b5d545b109c12p-1,-0x1.5078927295f2ep2
+sin,-0x1.643080d67ace4p-1,0x1.60e25b27012a7p2
+sin,0x1.643080d67ace4p-1,-0x1.60e25b27012a7p2
+sin,-0x1.f67ea975b86f6p-2,0x1.714c23db6c62p2
+sin,0x1.f67ea975b86f6p-2,-0x1.714c23db6c62p2
+sin,-0x1.03be06f97cc4dp-2,0x1.81b5ec8fd7999p2
+sin,0x1.03be06f97cc4dp-2,-0x1.81b5ec8fd7999p2
+sin,0x1.efb26ef930c4cp-5,0x1.effffffffffffp-5
+sin,-0x1.efb26ef930c4cp-5,-0x1.effffffffffffp-5
+sin,0x1.efb26ef930c4dp-5,0x1.fp-5
+sin,-0x1.efb26ef930c4dp-5,-0x1.fp-5
+sin,0x1.efb26ef930c4ep-5,0x1.f000000000001p-5
+sin,-0x1.efb26ef930c4ep-5,-0x1.f000000000001p-5
+sin,0x1.f6baaa131de63p-4,0x1.f7fffffffffffp-4
+sin,-0x1.f6baaa131de63p-4,-0x1.f7fffffffffffp-4
+sin,0x1.f6baaa131de64p-4,0x1.f8p-4
+sin,-0x1.f6baaa131de64p-4,-0x1.f8p-4
+sin,0x1.f6baaa131de65p-4,0x1.f800000000001p-4
+sin,-0x1.f6baaa131de65p-4,-0x1.f800000000001p-4
+sin,0x1.4a8c3b4e9c7ffp-3,0x1.4bfffffffffffp-3
+sin,-0x1.4a8c3b4e9c7ffp-3,-0x1.4bfffffffffffp-3
+sin,0x1.4a8c3b4e9c8p-3,0x1.4cp-3
+sin,-0x1.4a8c3b4e9c8p-3,-0x1.4cp-3
+sin,0x1.4a8c3b4e9c801p-3,0x1.4c00000000001p-3
+sin,-0x1.4a8c3b4e9c801p-3,-0x1.4c00000000001p-3
+sin,0x1.2e9cd95baba32p-2,0x1.3333333333332p-2
+sin,-0x1.2e9cd95baba32p-2,-0x1.3333333333332p-2
+sin,0x1.2e9cd95baba33p-2,0x1.3333333333333p-2
+sin,-0x1.2e9cd95baba33p-2,-0x1.3333333333333p-2
+sin,0x1.2e9cd95baba34p-2,0x1.3333333333334p-2
+sin,-0x1.2e9cd95baba34p-2,-0x1.3333333333334p-2
+sin,0x1.3faefc7a5466fp-1,0x1.594317acc4ef8p-1
+sin,-0x1.3faefc7a5466fp-1,-0x1.594317acc4ef8p-1
+sin,0x1.3faefc7a5467p-1,0x1.594317acc4ef9p-1
+sin,-0x1.3faefc7a5467p-1,-0x1.594317acc4ef9p-1
+sin,0x1.3faefc7a5467p-1,0x1.594317acc4efap-1
+sin,-0x1.3faefc7a5467p-1,-0x1.594317acc4efap-1
+sin,0x1.6888a4e134b2ep-1,0x1.8ffffffffffffp-1
+sin,-0x1.6888a4e134b2ep-1,-0x1.8ffffffffffffp-1
+sin,0x1.6888a4e134b2fp-1,0x1.9p-1
+sin,-0x1.6888a4e134b2fp-1,-0x1.9p-1
+sin,0x1.6888a4e134b2fp-1,0x1.9000000000001p-1
+sin,-0x1.6888a4e134b2fp-1,-0x1.9000000000001p-1
+sin,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+sin,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+sin,-0x0.0p0,-0x0.0p0
+sin,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+sin,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+sin,0x1.91f65f10dd813p-5,0x1.921fb54442d17p-5
+sin,-0x1.91f65f10dd813p-5,-0x1.921fb54442d17p-5
+sin,0x1.91f65f10dd814p-5,0x1.921fb54442d18p-5
+sin,-0x1.91f65f10dd814p-5,-0x1.921fb54442d18p-5
+sin,0x1.91f65f10dd815p-5,0x1.921fb54442d19p-5
+sin,-0x1.91f65f10dd815p-5,-0x1.921fb54442d19p-5
+sin,0x1.917a6bc29b42bp-4,0x1.921fb54442d17p-4
+sin,-0x1.917a6bc29b42bp-4,-0x1.921fb54442d17p-4
+sin,0x1.917a6bc29b42cp-4,0x1.921fb54442d18p-4
+sin,-0x1.917a6bc29b42cp-4,-0x1.921fb54442d18p-4
+sin,0x1.917a6bc29b42dp-4,0x1.921fb54442d19p-4
+sin,-0x1.917a6bc29b42dp-4,-0x1.921fb54442d19p-4
+sin,0x1.8f8b83c69a609p-3,0x1.921fb54442d17p-3
+sin,-0x1.8f8b83c69a609p-3,-0x1.921fb54442d17p-3
+sin,0x1.8f8b83c69a60ap-3,0x1.921fb54442d18p-3
+sin,-0x1.8f8b83c69a60ap-3,-0x1.921fb54442d18p-3
+sin,0x1.8f8b83c69a60bp-3,0x1.921fb54442d19p-3
+sin,-0x1.8f8b83c69a60bp-3,-0x1.921fb54442d19p-3
+sin,0x1.87de2a6aea962p-2,0x1.921fb54442d17p-2
+sin,-0x1.87de2a6aea962p-2,-0x1.921fb54442d17p-2
+sin,0x1.87de2a6aea963p-2,0x1.921fb54442d18p-2
+sin,-0x1.87de2a6aea963p-2,-0x1.921fb54442d18p-2
+sin,0x1.87de2a6aea964p-2,0x1.921fb54442d19p-2
+sin,-0x1.87de2a6aea964p-2,-0x1.921fb54442d19p-2
+sin,0x1.6a09e667f3bccp-1,0x1.921fb54442d17p-1
+sin,-0x1.6a09e667f3bccp-1,-0x1.921fb54442d17p-1
+sin,0x1.6a09e667f3bccp-1,0x1.921fb54442d18p-1
+sin,-0x1.6a09e667f3bccp-1,-0x1.921fb54442d18p-1
+sin,0x1.6a09e667f3bcdp-1,0x1.921fb54442d19p-1
+sin,-0x1.6a09e667f3bcdp-1,-0x1.921fb54442d19p-1
+sin,0x1.0p0,0x1.921fb54442d17p0
+sin,-0x1.0p0,-0x1.921fb54442d17p0
+sin,0x1.0p0,0x1.921fb54442d18p0
+sin,-0x1.0p0,-0x1.921fb54442d18p0
+sin,0x1.0p0,0x1.921fb54442d19p0
+sin,-0x1.0p0,-0x1.921fb54442d19p0
+sin,0x1.469898cc51702p-51,0x1.921fb54442d17p1
+sin,-0x1.469898cc51702p-51,-0x1.921fb54442d17p1
+sin,0x1.1a62633145c07p-53,0x1.921fb54442d18p1
+sin,-0x1.1a62633145c07p-53,-0x1.921fb54442d18p1
+sin,-0x1.72cece675d1fdp-52,0x1.921fb54442d19p1
+sin,0x1.72cece675d1fdp-52,-0x1.921fb54442d19p1
+sin,-0x1.469898cc51702p-50,0x1.921fb54442d17p2
+sin,0x1.469898cc51702p-50,-0x1.921fb54442d17p2
+sin,-0x1.1a62633145c07p-52,0x1.921fb54442d18p2
+sin,0x1.1a62633145c07p-52,-0x1.921fb54442d18p2
+sin,0x1.72cece675d1fdp-51,0x1.921fb54442d19p2
+sin,-0x1.72cece675d1fdp-51,-0x1.921fb54442d19p2
+sin,-0x1.469898cc51702p-49,0x1.921fb54442d17p3
+sin,0x1.469898cc51702p-49,-0x1.921fb54442d17p3
+sin,-0x1.1a62633145c07p-51,0x1.921fb54442d18p3
+sin,0x1.1a62633145c07p-51,-0x1.921fb54442d18p3
+sin,0x1.72cece675d1fdp-50,0x1.921fb54442d19p3
+sin,-0x1.72cece675d1fdp-50,-0x1.921fb54442d19p3
+sin,-0x1.469898cc51702p-48,0x1.921fb54442d17p4
+sin,0x1.469898cc51702p-48,-0x1.921fb54442d17p4
+sin,-0x1.1a62633145c07p-50,0x1.921fb54442d18p4
+sin,0x1.1a62633145c07p-50,-0x1.921fb54442d18p4
+sin,0x1.72cece675d1fdp-49,0x1.921fb54442d19p4
+sin,-0x1.72cece675d1fdp-49,-0x1.921fb54442d19p4
+sin,-0x1.469898cc51702p-47,0x1.921fb54442d17p5
+sin,0x1.469898cc51702p-47,-0x1.921fb54442d17p5
+sin,-0x1.1a62633145c07p-49,0x1.921fb54442d18p5
+sin,0x1.1a62633145c07p-49,-0x1.921fb54442d18p5
+sin,0x1.72cece675d1fdp-48,0x1.921fb54442d19p5
+sin,-0x1.72cece675d1fdp-48,-0x1.921fb54442d19p5
+sin,-0x1.469898cc51702p-46,0x1.921fb54442d17p6
+sin,0x1.469898cc51702p-46,-0x1.921fb54442d17p6
+sin,-0x1.1a62633145c07p-48,0x1.921fb54442d18p6
+sin,0x1.1a62633145c07p-48,-0x1.921fb54442d18p6
+sin,0x1.72cece675d1fdp-47,0x1.921fb54442d19p6
+sin,-0x1.72cece675d1fdp-47,-0x1.921fb54442d19p6
+sin,-0x1.469898cc51702p-45,0x1.921fb54442d17p7
+sin,0x1.469898cc51702p-45,-0x1.921fb54442d17p7
+sin,-0x1.1a62633145c07p-47,0x1.921fb54442d18p7
+sin,0x1.1a62633145c07p-47,-0x1.921fb54442d18p7
+sin,0x1.72cece675d1fdp-46,0x1.921fb54442d19p7
+sin,-0x1.72cece675d1fdp-46,-0x1.921fb54442d19p7
+sin,0x1.6a09e667f3bdp-1,0x1.2d97c7f3321d1p1
+sin,-0x1.6a09e667f3bdp-1,-0x1.2d97c7f3321d1p1
+sin,0x1.6a09e667f3bcdp-1,0x1.2d97c7f3321d2p1
+sin,-0x1.6a09e667f3bcdp-1,-0x1.2d97c7f3321d2p1
+sin,0x1.6a09e667f3bcap-1,0x1.2d97c7f3321d3p1
+sin,-0x1.6a09e667f3bcap-1,-0x1.2d97c7f3321d3p1
+sin,-0x1.6a09e667f3bc9p-1,0x1.f6a7a2955385dp1
+sin,0x1.6a09e667f3bc9p-1,-0x1.f6a7a2955385dp1
+sin,-0x1.6a09e667f3bccp-1,0x1.f6a7a2955385ep1
+sin,0x1.6a09e667f3bccp-1,-0x1.f6a7a2955385ep1
+sin,-0x1.6a09e667f3bcep-1,0x1.f6a7a2955385fp1
+sin,0x1.6a09e667f3bcep-1,-0x1.f6a7a2955385fp1
+sin,-0x1.0p0,0x1.2d97c7f3321d1p2
+sin,0x1.0p0,-0x1.2d97c7f3321d1p2
+sin,-0x1.0p0,0x1.2d97c7f3321d2p2
+sin,0x1.0p0,-0x1.2d97c7f3321d2p2
+sin,-0x1.0p0,0x1.2d97c7f3321d3p2
+sin,0x1.0p0,-0x1.2d97c7f3321d3p2
+sin,-0x1.6a09e667f3bd4p-1,0x1.5fdbbe9bba774p2
+sin,0x1.6a09e667f3bd4p-1,-0x1.5fdbbe9bba774p2
+sin,-0x1.6a09e667f3bcep-1,0x1.5fdbbe9bba775p2
+sin,0x1.6a09e667f3bcep-1,-0x1.5fdbbe9bba775p2
+sin,-0x1.6a09e667f3bc8p-1,0x1.5fdbbe9bba776p2
+sin,0x1.6a09e667f3bc8p-1,-0x1.5fdbbe9bba776p2
+sin,0x1.6a09e667f3bc5p-1,0x1.c463abeccb2bap2
+sin,-0x1.6a09e667f3bc5p-1,-0x1.c463abeccb2bap2
+sin,0x1.6a09e667f3bcbp-1,0x1.c463abeccb2bbp2
+sin,-0x1.6a09e667f3bcbp-1,-0x1.c463abeccb2bbp2
+sin,0x1.6a09e667f3bd1p-1,0x1.c463abeccb2bcp2
+sin,-0x1.6a09e667f3bd1p-1,-0x1.c463abeccb2bcp2
+sin,0x1.0p0,0x1.f6a7a2955385dp2
+sin,-0x1.0p0,-0x1.f6a7a2955385dp2
+sin,0x1.0p0,0x1.f6a7a2955385ep2
+sin,-0x1.0p0,-0x1.f6a7a2955385ep2
+sin,0x1.0p0,0x1.f6a7a2955385fp2
+sin,-0x1.0p0,-0x1.f6a7a2955385fp2
+sin,0x1.6a09e667f3bdfp-1,0x1.1475cc9eedeffp3
+sin,-0x1.6a09e667f3bdfp-1,-0x1.1475cc9eedeffp3
+sin,0x1.6a09e667f3bd4p-1,0x1.1475cc9eedfp3
+sin,-0x1.6a09e667f3bd4p-1,-0x1.1475cc9eedfp3
+sin,0x1.6a09e667f3bc9p-1,0x1.1475cc9eedf01p3
+sin,-0x1.6a09e667f3bc9p-1,-0x1.1475cc9eedf01p3
+sin,0x1.34f272993d141p-49,0x1.2d97c7f3321d1p3
+sin,-0x1.34f272993d141p-49,-0x1.2d97c7f3321d1p3
+sin,0x1.a79394c9e8a0ap-52,0x1.2d97c7f3321d2p3
+sin,-0x1.a79394c9e8a0ap-52,-0x1.2d97c7f3321d2p3
+sin,-0x1.961b1acd85d7dp-50,0x1.2d97c7f3321d3p3
+sin,0x1.961b1acd85d7dp-50,-0x1.2d97c7f3321d3p3
+sin,-0x1.6a09e667f3bb9p-1,0x1.46b9c347764a2p3
+sin,0x1.6a09e667f3bb9p-1,-0x1.46b9c347764a2p3
+sin,-0x1.6a09e667f3bc4p-1,0x1.46b9c347764a3p3
+sin,0x1.6a09e667f3bc4p-1,-0x1.46b9c347764a3p3
+sin,-0x1.6a09e667f3bdp-1,0x1.46b9c347764a4p3
+sin,0x1.6a09e667f3bdp-1,-0x1.46b9c347764a4p3
+sin,-0x1.0p0,0x1.5fdbbe9bba774p3
+sin,0x1.0p0,-0x1.5fdbbe9bba774p3
+sin,-0x1.0p0,0x1.5fdbbe9bba775p3
+sin,0x1.0p0,-0x1.5fdbbe9bba775p3
+sin,-0x1.0p0,0x1.5fdbbe9bba776p3
+sin,0x1.0p0,-0x1.5fdbbe9bba776p3
+sin,-0x1.6a09e667f3bep-1,0x1.78fdb9effea45p3
+sin,0x1.6a09e667f3bep-1,-0x1.78fdb9effea45p3
+sin,-0x1.6a09e667f3bd5p-1,0x1.78fdb9effea46p3
+sin,0x1.6a09e667f3bd5p-1,-0x1.78fdb9effea46p3
+sin,-0x1.6a09e667f3bcap-1,0x1.78fdb9effea47p3
+sin,0x1.6a09e667f3bcap-1,-0x1.78fdb9effea47p3
+sin,0x1.6a09e667f3bb8p-1,0x1.ab41b09886fe8p3
+sin,-0x1.6a09e667f3bb8p-1,-0x1.ab41b09886fe8p3
+sin,0x1.6a09e667f3bc4p-1,0x1.ab41b09886fe9p3
+sin,-0x1.6a09e667f3bc4p-1,-0x1.ab41b09886fe9p3
+sin,0x1.6a09e667f3bcfp-1,0x1.ab41b09886feap3
+sin,-0x1.6a09e667f3bcfp-1,-0x1.ab41b09886feap3
+sin,0x1.0p0,0x1.c463abeccb2bap3
+sin,-0x1.0p0,-0x1.c463abeccb2bap3
+sin,0x1.0p0,0x1.c463abeccb2bbp3
+sin,-0x1.0p0,-0x1.c463abeccb2bbp3
+sin,0x1.0p0,0x1.c463abeccb2bcp3
+sin,-0x1.0p0,-0x1.c463abeccb2bcp3
+sin,0x1.6a09e667f3be1p-1,0x1.dd85a7410f58bp3
+sin,-0x1.6a09e667f3be1p-1,-0x1.dd85a7410f58bp3
+sin,0x1.6a09e667f3bd6p-1,0x1.dd85a7410f58cp3
+sin,-0x1.6a09e667f3bd6p-1,-0x1.dd85a7410f58cp3
+sin,0x1.6a09e667f3bcbp-1,0x1.dd85a7410f58dp3
+sin,-0x1.6a09e667f3bcbp-1,-0x1.dd85a7410f58dp3
+sin,0x1.583ebeff65cc2p-49,0x1.f6a7a2955385dp3
+sin,-0x1.583ebeff65cc2p-49,-0x1.f6a7a2955385dp3
+sin,0x1.60fafbfd97309p-51,0x1.f6a7a2955385ep3
+sin,-0x1.60fafbfd97309p-51,-0x1.f6a7a2955385ep3
+sin,-0x1.4f8282013467cp-50,0x1.f6a7a2955385fp3
+sin,0x1.4f8282013467cp-50,-0x1.f6a7a2955385fp3
+sin,-0x1.6a09e667f3ba1p-1,0x1.07e4cef4cbd96p4
+sin,0x1.6a09e667f3ba1p-1,-0x1.07e4cef4cbd96p4
+sin,-0x1.6a09e667f3bb8p-1,0x1.07e4cef4cbd97p4
+sin,0x1.6a09e667f3bb8p-1,-0x1.07e4cef4cbd97p4
+sin,-0x1.6a09e667f3bcep-1,0x1.07e4cef4cbd98p4
+sin,0x1.6a09e667f3bcep-1,-0x1.07e4cef4cbd98p4
+sin,-0x1.0p0,0x1.1475cc9eedeffp4
+sin,0x1.0p0,-0x1.1475cc9eedeffp4
+sin,-0x1.0p0,0x1.1475cc9eedfp4
+sin,0x1.0p0,-0x1.1475cc9eedfp4
+sin,-0x1.0p0,0x1.1475cc9eedf01p4
+sin,0x1.0p0,-0x1.1475cc9eedf01p4
+sin,-0x1.6a09e667f3bedp-1,0x1.2106ca4910068p4
+sin,0x1.6a09e667f3bedp-1,-0x1.2106ca4910068p4
+sin,-0x1.6a09e667f3bd7p-1,0x1.2106ca4910069p4
+sin,0x1.6a09e667f3bd7p-1,-0x1.2106ca4910069p4
+sin,-0x1.6a09e667f3bcp-1,0x1.2106ca491006ap4
+sin,0x1.6a09e667f3bcp-1,-0x1.2106ca491006ap4
+sin,-0x1.34f272993d141p-48,0x1.2d97c7f3321d1p4
+sin,0x1.34f272993d141p-48,-0x1.2d97c7f3321d1p4
+sin,-0x1.a79394c9e8a0ap-51,0x1.2d97c7f3321d2p4
+sin,0x1.a79394c9e8a0ap-51,-0x1.2d97c7f3321d2p4
+sin,0x1.961b1acd85d7dp-49,0x1.2d97c7f3321d3p4
+sin,-0x1.961b1acd85d7dp-49,-0x1.2d97c7f3321d3p4
+sin,0x1.6a09e667f3bap-1,0x1.3a28c59d54339p4
+sin,-0x1.6a09e667f3bap-1,-0x1.3a28c59d54339p4
+sin,0x1.6a09e667f3bb7p-1,0x1.3a28c59d5433ap4
+sin,-0x1.6a09e667f3bb7p-1,-0x1.3a28c59d5433ap4
+sin,0x1.6a09e667f3bcep-1,0x1.3a28c59d5433bp4
+sin,-0x1.6a09e667f3bcep-1,-0x1.3a28c59d5433bp4
+sin,0x1.0p0,0x1.46b9c347764a2p4
+sin,-0x1.0p0,-0x1.46b9c347764a2p4
+sin,0x1.0p0,0x1.46b9c347764a3p4
+sin,-0x1.0p0,-0x1.46b9c347764a3p4
+sin,0x1.0p0,0x1.46b9c347764a4p4
+sin,-0x1.0p0,-0x1.46b9c347764a4p4
+sin,0x1.6a09e667f3beep-1,0x1.534ac0f19860bp4
+sin,-0x1.6a09e667f3beep-1,-0x1.534ac0f19860bp4
+sin,0x1.6a09e667f3bd8p-1,0x1.534ac0f19860cp4
+sin,-0x1.6a09e667f3bd8p-1,-0x1.534ac0f19860cp4
+sin,0x1.6a09e667f3bc1p-1,0x1.534ac0f19860dp4
+sin,-0x1.6a09e667f3bc1p-1,-0x1.534ac0f19860dp4
+sin,0x1.3dc585b2c7422p-48,0x1.5fdbbe9bba774p4
+sin,-0x1.3dc585b2c7422p-48,-0x1.5fdbbe9bba774p4
+sin,0x1.ee2c2d963a10cp-51,0x1.5fdbbe9bba775p4
+sin,-0x1.ee2c2d963a10cp-51,-0x1.5fdbbe9bba775p4
+sin,-0x1.8474f49a717bdp-49,0x1.5fdbbe9bba776p4
+sin,0x1.8474f49a717bdp-49,-0x1.5fdbbe9bba776p4
+sin,-0x1.6a09e667f3b9fp-1,0x1.6c6cbc45dc8dcp4
+sin,0x1.6a09e667f3b9fp-1,-0x1.6c6cbc45dc8dcp4
+sin,-0x1.6a09e667f3bb6p-1,0x1.6c6cbc45dc8ddp4
+sin,0x1.6a09e667f3bb6p-1,-0x1.6c6cbc45dc8ddp4
+sin,-0x1.6a09e667f3bcdp-1,0x1.6c6cbc45dc8dep4
+sin,0x1.6a09e667f3bcdp-1,-0x1.6c6cbc45dc8dep4
+sin,-0x1.0p0,0x1.78fdb9effea45p4
+sin,0x1.0p0,-0x1.78fdb9effea45p4
+sin,-0x1.0p0,0x1.78fdb9effea46p4
+sin,0x1.0p0,-0x1.78fdb9effea46p4
+sin,-0x1.0p0,0x1.78fdb9effea47p4
+sin,0x1.0p0,-0x1.78fdb9effea47p4
+sin,-0x1.6a09e667f3befp-1,0x1.858eb79a20baep4
+sin,0x1.6a09e667f3befp-1,-0x1.858eb79a20baep4
+sin,-0x1.6a09e667f3bd8p-1,0x1.858eb79a20bafp4
+sin,0x1.6a09e667f3bd8p-1,-0x1.858eb79a20bafp4
+sin,-0x1.6a09e667f3bc2p-1,0x1.858eb79a20bbp4
+sin,0x1.6a09e667f3bc2p-1,-0x1.858eb79a20bbp4
+sin,0x1.fa7299b17573dp-1,0x1.fffffffffffffp62
+sin,-0x1.fa7299b17573dp-1,-0x1.fffffffffffffp62
+sin,0x1.fff6dfd42dc54p-1,0x1.0p63
+sin,-0x1.fff6dfd42dc54p-1,-0x1.0p63
+sin,0x1.e456b818e7397p-1,0x1.0000000000001p63
+sin,-0x1.e456b818e7397p-1,-0x1.0000000000001p63
+sin,-0x1.86dcca0d689e8p-1,0x1.fffffffffffffp26
+sin,0x1.86dcca0d689e8p-1,-0x1.fffffffffffffp26
+sin,-0x1.86dcc9babb0a4p-1,0x1.0p27
+sin,0x1.86dcc9babb0a4p-1,-0x1.0p27
+sin,-0x1.86dcc9155fe18p-1,0x1.0000000000001p27
+sin,0x1.86dcc9155fe18p-1,-0x1.0000000000001p27
+sin,-0x1.8f22f84d42da2p-1,0x1.fffffffffffffp23
+sin,0x1.8f22f84d42da2p-1,-0x1.fffffffffffffp23
+sin,-0x1.8f22f8433d6eep-1,0x1.0p24
+sin,0x1.8f22f8433d6eep-1,-0x1.0p24
+sin,-0x1.8f22f82f32986p-1,0x1.0000000000001p24
+sin,0x1.8f22f82f32986p-1,-0x1.0000000000001p24
+sin,-0x1.837b9dddc1eacp-1,0x1.fffffffffffffp1
+sin,0x1.837b9dddc1eacp-1,-0x1.fffffffffffffp1
+sin,-0x1.837b9dddc1eaep-1,0x1.0p2
+sin,0x1.837b9dddc1eaep-1,-0x1.0p2
+sin,-0x1.837b9dddc1eb4p-1,0x1.0000000000001p2
+sin,0x1.837b9dddc1eb4p-1,-0x1.0000000000001p2
+sin,0x1.d18f6ead1b447p-1,0x1.fffffffffffffp0
+sin,-0x1.d18f6ead1b447p-1,-0x1.fffffffffffffp0
+sin,0x1.d18f6ead1b446p-1,0x1.0p1
+sin,-0x1.d18f6ead1b446p-1,-0x1.0p1
+sin,0x1.d18f6ead1b444p-1,0x1.0000000000001p1
+sin,-0x1.d18f6ead1b444p-1,-0x1.0000000000001p1
+sin,0x1.aed548f090cedp-1,0x1.fffffffffffffp-1
+sin,-0x1.aed548f090cedp-1,-0x1.fffffffffffffp-1
+sin,0x1.aed548f090ceep-1,0x1.0p0
+sin,-0x1.aed548f090ceep-1,-0x1.0p0
+sin,0x1.aed548f090cefp-1,0x1.0000000000001p0
+sin,-0x1.aed548f090cefp-1,-0x1.0000000000001p0
+sin,0x1.eaee8744b05efp-2,0x1.fffffffffffffp-2
+sin,-0x1.eaee8744b05efp-2,-0x1.fffffffffffffp-2
+sin,0x1.eaee8744b05fp-2,0x1.0p-1
+sin,-0x1.eaee8744b05fp-2,-0x1.0p-1
+sin,0x1.eaee8744b05f2p-2,0x1.0000000000001p-1
+sin,-0x1.eaee8744b05f2p-2,-0x1.0000000000001p-1
+sin,0x1.faaeed4f31576p-3,0x1.fffffffffffffp-3
+sin,-0x1.faaeed4f31576p-3,-0x1.fffffffffffffp-3
+sin,0x1.faaeed4f31577p-3,0x1.0p-2
+sin,-0x1.faaeed4f31577p-3,-0x1.0p-2
+sin,0x1.faaeed4f31579p-3,0x1.0000000000001p-2
+sin,-0x1.faaeed4f31579p-3,-0x1.0000000000001p-2
+sin,0x1.feaaeee86ee35p-4,0x1.fffffffffffffp-4
+sin,-0x1.feaaeee86ee35p-4,-0x1.fffffffffffffp-4
+sin,0x1.feaaeee86ee36p-4,0x1.0p-3
+sin,-0x1.feaaeee86ee36p-4,-0x1.0p-3
+sin,0x1.feaaeee86ee38p-4,0x1.0000000000001p-3
+sin,-0x1.feaaeee86ee38p-4,-0x1.0000000000001p-3
+sin,0x1.ffaaaeeed4edap-5,0x1.fffffffffffffp-5
+sin,-0x1.ffaaaeeed4edap-5,-0x1.fffffffffffffp-5
+sin,0x1.ffaaaeeed4edbp-5,0x1.0p-4
+sin,-0x1.ffaaaeeed4edbp-5,-0x1.0p-4
+sin,0x1.ffaaaeeed4eddp-5,0x1.0000000000001p-4
+sin,-0x1.ffaaaeeed4eddp-5,-0x1.0000000000001p-4
+sin,0x1.ffeaaaeeee86ep-6,0x1.fffffffffffffp-6
+sin,-0x1.ffeaaaeeee86ep-6,-0x1.fffffffffffffp-6
+sin,0x1.ffeaaaeeee86fp-6,0x1.0p-5
+sin,-0x1.ffeaaaeeee86fp-6,-0x1.0p-5
+sin,0x1.ffeaaaeeee871p-6,0x1.0000000000001p-5
+sin,-0x1.ffeaaaeeee871p-6,-0x1.0000000000001p-5
+sin,0x1.fffaaaaeeeed4p-7,0x1.fffffffffffffp-7
+sin,-0x1.fffaaaaeeeed4p-7,-0x1.fffffffffffffp-7
+sin,0x1.fffaaaaeeeed5p-7,0x1.0p-6
+sin,-0x1.fffaaaaeeeed5p-7,-0x1.0p-6
+sin,0x1.fffaaaaeeeed7p-7,0x1.0000000000001p-6
+sin,-0x1.fffaaaaeeeed7p-7,-0x1.0000000000001p-6
+sin,0x1.fffffffaaaaaap-15,0x1.fffffffffffffp-15
+sin,-0x1.fffffffaaaaaap-15,-0x1.fffffffffffffp-15
+sin,0x1.fffffffaaaaabp-15,0x1.0p-14
+sin,-0x1.fffffffaaaaabp-15,-0x1.0p-14
+sin,0x1.fffffffaaaaadp-15,0x1.0000000000001p-14
+sin,-0x1.fffffffaaaaadp-15,-0x1.0000000000001p-14
+sin,0x1.fffffffffffffp-28,0x1.fffffffffffffp-28
+sin,-0x1.fffffffffffffp-28,-0x1.fffffffffffffp-28
+sin,0x1.0p-27,0x1.0p-27
+sin,-0x1.0p-27,-0x1.0p-27
+sin,0x1.0000000000001p-27,0x1.0000000000001p-27
+sin,-0x1.0000000000001p-27,-0x1.0000000000001p-27
+sin,0x1.fffffffffffffp-31,0x1.fffffffffffffp-31
+sin,-0x1.fffffffffffffp-31,-0x1.fffffffffffffp-31
+sin,0x1.0p-30,0x1.0p-30
+sin,-0x1.0p-30,-0x1.0p-30
+sin,0x1.0000000000001p-30,0x1.0000000000001p-30
+sin,-0x1.0000000000001p-30,-0x1.0000000000001p-30
+sin,-0x1.452fc98b34e97p-8,-0x1.fffffffffffffp1023
+sin,0x1.452fc98b34e97p-8,0x1.fffffffffffffp1023
+sin,0x1.452fc98b34e97p-8,0x1.fffffffffffffp1023
+sin,-0x1.452fc98b34e97p-8,-0x1.fffffffffffffp1023
+sin,0x1.452fc98b34e97p-8,0x1.fffffffffffffp1023
+sin,-0x1.452fc98b34e97p-8,-0x1.fffffffffffffp1023
+sin,0x1.daa3677c6ee8ap-1,0x1.ffffffffffffep1023
+sin,-0x1.daa3677c6ee8ap-1,-0x1.ffffffffffffep1023
+sin,0x1.1a62633145c07p-53,0x1.921fb54442d18p1
+sin,-0x1.1a62633145c07p-53,-0x1.921fb54442d18p1
+sin,0x1.0p0,0x1.921fb54442d18p0
+sin,-0x1.0p0,-0x1.921fb54442d18p0
+sin,0x1.aed548f090cefp-1,0x1.0000000000001p0
+sin,-0x1.aed548f090cefp-1,-0x1.0000000000001p0
+sin,0x1.aed548f090ceep-1,0x1.0p0
+sin,-0x1.aed548f090ceep-1,-0x1.0p0
+sin,0x1.aed548f090cedp-1,0x1.fffffffffffffp-1
+sin,-0x1.aed548f090cedp-1,-0x1.fffffffffffffp-1
+sin,0x1.6a09e667f3bccp-1,0x1.921fb54442d18p-1
+sin,-0x1.6a09e667f3bccp-1,-0x1.921fb54442d18p-1
+sin,0x1.0000000000001p-1022,0x1.0000000000001p-1022
+sin,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022
+sin,0x1.0p-1022,0x1.0p-1022
+sin,-0x1.0p-1022,-0x1.0p-1022
+sin,0x0.fffffffffffffp-1022,0x0.fffffffffffffp-1022
+sin,-0x0.fffffffffffffp-1022,-0x0.fffffffffffffp-1022
+sin,0x0.ffffffffffffep-1022,0x0.ffffffffffffep-1022
+sin,-0x0.ffffffffffffep-1022,-0x0.ffffffffffffep-1022
+sin,0x0.0000000000002p-1022,0x0.0000000000002p-1022
+sin,-0x0.0000000000002p-1022,-0x0.0000000000002p-1022
+sin,0x0.0000000000001p-1022,0x0.0000000000001p-1022
+sin,-0x0.0000000000001p-1022,-0x0.0000000000001p-1022
+sin,0x0.0p0,0x0.0p0
+cos,0x1.c1a27ae836f13p-1,0x1.feb1f7920e248p-2
+cos,0x1.c1a27ae836f13p-1,-0x1.feb1f7920e248p-2
+cos,0x1.78daf01036d0dp-1,0x1.7cb7648526f99p-1
+cos,0x1.78daf01036d0dp-1,-0x1.7cb7648526f99p-1
+cos,0x1.ff8eb6a91ecbp-1,0x1.549ec0c0c5afap-5
+cos,0x1.ff8eb6a91ecbp-1,-0x1.549ec0c0c5afap-5
+cos,0x1.fed0476fc75cap-1,0x1.16e534ee3658p-4
+cos,0x1.fed0476fc75cap-1,-0x1.16e534ee3658p-4
+cos,0x1.f10fc61e2c78fp-1,0x1.efeef61d39ac2p-3
+cos,0x1.f10fc61e2c78fp-1,-0x1.efeef61d39ac2p-3
+cos,0x1.434a3645be208p-1,0x1.c65a170474549p-1
+cos,0x1.434a3645be208p-1,-0x1.c65a170474549p-1
+cos,0x1.337fc5b072c53p-3,0x1.6b8a6273d7c21p0
+cos,0x1.337fc5b072c53p-3,-0x1.6b8a6273d7c21p0
+cos,0x1.efa7cddb128fcp-1,-0x1.036f4ba7e90aap-2
+cos,0x1.efa7cddb128fcp-1,0x1.036f4ba7e90aap-2
+cos,0x1.0p0,-0x1.1500766c9df2p-31
+cos,0x1.0p0,0x1.1500766c9df2p-31
+cos,0x1.ec231802917bep-1,-0x1.1e2a1563e068ep-2
+cos,0x1.ec231802917bep-1,0x1.1e2a1563e068ep-2
+cos,0x1.dc044ac92b7fcp-8,-0x1.2115aa73f8d05p5
+cos,0x1.dc044ac92b7fcp-8,0x1.2115aa73f8d05p5
+cos,0x1.d1fa67c50dd53p-4,-0x1.34e3bcdf8f69ap2
+cos,0x1.d1fa67c50dd53p-4,0x1.34e3bcdf8f69ap2
+cos,0x1.e2f8d19fb8db8p-2,-0x1.380000000000bp7
+cos,0x1.e2f8d19fb8db8p-2,0x1.380000000000bp7
+cos,0x1.8da9c90c3eda1p-1,-0x1.440000004p6
+cos,0x1.8da9c90c3eda1p-1,0x1.440000004p6
+cos,0x1.b59b320603f83p-1,-0x1.550c8ee67a4c4p29
+cos,0x1.b59b320603f83p-1,0x1.550c8ee67a4c4p29
+cos,0x1.ffffff7af6c88p-1,-0x1.711789fdb2e8ap-13
+cos,0x1.ffffff7af6c88p-1,0x1.711789fdb2e8ap-13
+cos,0x1.c1b68ebb0b4fep-2,-0x1.77e000002p8
+cos,0x1.c1b68ebb0b4fep-2,0x1.77e000002p8
+cos,0x1.1161e1dad76dcp-4,-0x1.8106561931b43p0
+cos,0x1.1161e1dad76dcp-4,0x1.8106561931b43p0
+cos,0x1.f828c3226b3d7p-5,-0x1.825be2461cad4p0
+cos,0x1.f828c3226b3d7p-5,0x1.825be2461cad4p0
+cos,0x1.f2990d742e9fbp-5,-0x1.8288755803b08p0
+cos,0x1.f2990d742e9fbp-5,0x1.8288755803b08p0
+cos,-0x1.ff150dda7524dp-1,-0x1.8a75701f4ccd3p1
+cos,-0x1.ff150dda7524dp-1,0x1.8a75701f4ccd3p1
+cos,0x1.015c47c32b574p-1,-0x1.b389316f37f37p3
+cos,0x1.015c47c32b574p-1,0x1.b389316f37f37p3
+cos,0x1.d681a366a0534p-1,-0x1.c602c465d7d27p6
+cos,0x1.d681a366a0534p-1,0x1.c602c465d7d27p6
+cos,-0x1.84e896c7543d6p-1,-0x1.cfb81fe69664cp4
+cos,-0x1.84e896c7543d6p-1,0x1.cfb81fe69664cp4
+cos,0x1.fc5dcfddd54cp-1,-0x1.d08f2d86b12c6p13
+cos,0x1.fc5dcfddd54cp-1,0x1.d08f2d86b12c6p13
+cos,0x1.fe83235fbe016p-3,-0x1.de13f0943c494p99
+cos,0x1.fe83235fbe016p-3,0x1.de13f0943c494p99
+cos,-0x1.720321239ec5p-1,-0x1.de3c1f1285e8bp3
+cos,-0x1.720321239ec5p-1,0x1.de3c1f1285e8bp3
+cos,0x1.f7143c8bba407p-4,-0x1.fffffffffff7fp1023
+cos,0x1.f7143c8bba407p-4,0x1.fffffffffff7fp1023
+cos,-0x1.fffe62ecfab75p-1,-0x1.fffffffffffffp1023
+cos,-0x1.fffe62ecfab75p-1,0x1.fffffffffffffp1023
+cos,0x1.055e457ac1227p-5,0x1.0000000000001p51
+cos,0x1.055e457ac1227p-5,-0x1.0000000000001p51
+cos,0x1.c1528065b7d4ep-1,0x1.0000000000003p-1
+cos,0x1.c1528065b7d4ep-1,-0x1.0000000000003p-1
+cos,0x1.0p0,0x1.0000000000003p-32
+cos,0x1.0p0,-0x1.0000000000003p-32
+cos,0x1.fffea444bc05ep-1,0x1.000000000002p150
+cos,0x1.fffea444bc05ep-1,-0x1.000000000002p150
+cos,-0x1.ebddee876f434p-1,0x1.0000000000038p380
+cos,-0x1.ebddee876f434p-1,-0x1.0000000000038p380
+cos,-0x1.f2ffc51dc6968p-1,0x1.0000000000118p380
+cos,-0x1.f2ffc51dc6968p-1,-0x1.0000000000118p380
+cos,-0x1.f8fbb4d358b2p-1,0x1.00000000003ffp641
+cos,-0x1.f8fbb4d358b2p-1,-0x1.00000000003ffp641
+cos,-0x1.aa2265753e668p-2,0x1.0000000001p1
+cos,-0x1.aa2265753e668p-2,-0x1.0000000001p1
+cos,0x1.fd1242c25994dp-1,0x1.000000008p452
+cos,0x1.fd1242c25994dp-1,-0x1.000000008p452
+cos,0x1.fffc0001554dap-1,0x1.00000000effafp-7
+cos,0x1.fffc0001554dap-1,-0x1.00000000effafp-7
+cos,0x1.14a27f2925522p-1,0x1.00000114fefe2p0
+cos,0x1.14a27f2925522p-1,-0x1.00000114fefe2p0
+cos,0x1.bf81e0269c59dp-3,0x1.000007p40
+cos,0x1.bf81e0269c59dp-3,-0x1.000007p40
+cos,0x1.14a26ed1960d6p-1,0x1.00000acadb3d3p0
+cos,0x1.14a26ed1960d6p-1,-0x1.00000acadb3d3p0
+cos,0x1.ffffffffbfffep-1,0x1.00003p-17
+cos,0x1.ffffffffbfffep-1,-0x1.00003p-17
+cos,0x1.ffffffffeffffp-1,0x1.00003ffffffaep-18
+cos,0x1.ffffffffeffffp-1,-0x1.00003ffffffaep-18
+cos,0x1.ffffffffeffffp-1,0x1.00003ffffffffp-18
+cos,0x1.ffffffffeffffp-1,-0x1.00003ffffffffp-18
+cos,-0x1.dab7efeb35baep-2,0x1.00007ffffdeap41
+cos,-0x1.dab7efeb35baep-2,-0x1.00007ffffdeap41
+cos,0x1.fffffffffcp-1,0x1.0000ffff8p-19
+cos,0x1.fffffffffcp-1,-0x1.0000ffff8p-19
+cos,0x1.ffffffffffp-1,0x1.0003fff800051p-20
+cos,0x1.ffffffffffp-1,-0x1.0003fff800051p-20
+cos,0x1.ffffffffffp-1,0x1.0003fff800096p-20
+cos,0x1.ffffffffffp-1,-0x1.0003fff800096p-20
+cos,-0x1.fbf2b71a23a58p-2,0x1.000fd2p334
+cos,-0x1.fbf2b71a23a58p-2,-0x1.000fd2p334
+cos,0x1.fccc87eae7737p-5,0x1.003p514
+cos,0x1.fccc87eae7737p-5,-0x1.003p514
+cos,-0x1.a43f40d92b7edp-7,0x1.00600000015f4p41
+cos,-0x1.a43f40d92b7edp-7,-0x1.00600000015f4p41
+cos,0x1.c11cc38f40ab3p-1,0x1.007p-1
+cos,0x1.c11cc38f40ab3p-1,-0x1.007p-1
+cos,0x1.ffffffffffbfcp-1,0x1.007p-21
+cos,0x1.ffffffffffbfcp-1,-0x1.007p-21
+cos,0x1.e9ba98231f734p-8,0x1.00cp40
+cos,0x1.e9ba98231f734p-8,-0x1.00cp40
+cos,0x1.fefdf48ed649dp-1,0x1.011p-4
+cos,0x1.fefdf48ed649dp-1,-0x1.011p-4
+cos,-0x1.ffc16a0f12ff2p-1,0x1.011p996
+cos,-0x1.ffc16a0f12ff2p-1,-0x1.011p996
+cos,0x1.efd5b61a30a38p-1,0x1.02p-2
+cos,0x1.efd5b61a30a38p-1,-0x1.02p-2
+cos,0x1.c97b8161dc50ap-2,0x1.0204260c18307p59
+cos,0x1.c97b8161dc50ap-2,-0x1.0204260c18307p59
+cos,-0x1.bf26a3c9b9fbfp-2,0x1.02e78a321155ep1
+cos,-0x1.bf26a3c9b9fbfp-2,-0x1.02e78a321155ep1
+cos,0x1.fef806b1f84e5p-1,0x1.04p-4
+cos,0x1.fef806b1f84e5p-1,-0x1.04p-4
+cos,0x1.fe851fbf87d17p-1,0x1.04bde8bb80258p98
+cos,0x1.fe851fbf87d17p-1,-0x1.04bde8bb80258p98
+cos,0x1.70f6a51da8effp-1,0x1.077e749e37ceep236
+cos,0x1.70f6a51da8effp-1,-0x1.077e749e37ceep236
+cos,0x1.6b408c856bda6p-3,0x1.07f8p300
+cos,0x1.6b408c856bda6p-3,-0x1.07f8p300
+cos,0x1.2b2f965ae40fcp-1,0x1.07f9bea1b3546p27
+cos,0x1.2b2f965ae40fcp-1,-0x1.07f9bea1b3546p27
+cos,-0x1.4eed2f3fc76a8p-1,0x1.090d18372f2d5p4
+cos,-0x1.4eed2f3fc76a8p-1,-0x1.090d18372f2d5p4
+cos,0x1.fba59aecee5p-1,0x1.0b4p-3
+cos,0x1.fba59aecee5p-1,-0x1.0b4p-3
+cos,0x1.fffd1bcda7a7dp-1,0x1.0c0d5c2af3c2ep346
+cos,0x1.fffd1bcda7a7dp-1,-0x1.0c0d5c2af3c2ep346
+cos,-0x1.e4dfe83129286p-1,0x1.0d30596ee91fdp216
+cos,-0x1.e4dfe83129286p-1,-0x1.0d30596ee91fdp216
+cos,0x1.fb8432886a284p-2,0x1.0d6p0
+cos,0x1.fb8432886a284p-2,-0x1.0d6p0
+cos,0x1.ffffee202854p-1,0x1.0e9474c68831cp-10
+cos,0x1.ffffee202854p-1,-0x1.0e9474c68831cp-10
+cos,-0x1.b70d3d5584b1bp-2,0x1.113bae4049849p2
+cos,-0x1.b70d3d5584b1bp-2,-0x1.113bae4049849p2
+cos,0x1.fed8df58f626p-1,0x1.12eb87097654p-4
+cos,0x1.fed8df58f626p-1,-0x1.12eb87097654p-4
+cos,0x1.e536ae395dfcep-2,0x1.13cp0
+cos,0x1.e536ae395dfcep-2,-0x1.13cp0
+cos,0x1.fed0476fc75cap-1,0x1.16e534ee3658p-4
+cos,0x1.fed0476fc75cap-1,-0x1.16e534ee3658p-4
+cos,0x1.fb38e82e3193ap-1,0x1.17fffffffea98p-3
+cos,0x1.fb38e82e3193ap-1,-0x1.17fffffffea98p-3
+cos,0x1.fb38e82e3188p-1,0x1.18p-3
+cos,0x1.fb38e82e3188p-1,-0x1.18p-3
+cos,-0x1.e59647f1fe9c7p-1,0x1.1a191ebbb4d7fp7
+cos,-0x1.e59647f1fe9c7p-1,-0x1.1a191ebbb4d7fp7
+cos,-0x1.d0dca1f8715bep-4,0x1.1da84f2b7b1d8p7
+cos,-0x1.d0dca1f8715bep-4,-0x1.1da84f2b7b1d8p7
+cos,0x1.b917ebbc30e1ep-2,0x1.201e973251302p0
+cos,0x1.b917ebbc30e1ep-2,-0x1.201e973251302p0
+cos,0x1.fffadf12ff414p-1,0x1.21e02p-7
+cos,0x1.fffadf12ff414p-1,-0x1.21e02p-7
+cos,-0x1.598a4dab3de5ap-1,0x1.27e29a4b985bfp1
+cos,-0x1.598a4dab3de5ap-1,-0x1.27e29a4b985bfp1
+cos,0x1.fa95c1154abf5p-1,0x1.2a1f28dbfb6cp-3
+cos,0x1.fa95c1154abf5p-1,-0x1.2a1f28dbfb6cp-3
+cos,-0x1.6412293adb7bcp-1,0x1.2b8p1
+cos,-0x1.6412293adb7bcp-1,-0x1.2b8p1
+cos,0x1.fffa518a7d0e7p-1,0x1.31199def72f4dp-7
+cos,0x1.fffa518a7d0e7p-1,-0x1.31199def72f4dp-7
+cos,0x1.f36895fe177f8p-1,0x1.31260e1485014p4
+cos,0x1.f36895fe177f8p-1,-0x1.31260e1485014p4
+cos,0x1.d36207b4fee17p-4,0x1.34e964cd103bdp2
+cos,0x1.d36207b4fee17p-4,-0x1.34e964cd103bdp2
+cos,-0x1.84a37f4fa7616p-1,0x1.37618a0ba785p1
+cos,-0x1.84a37f4fa7616p-1,-0x1.37618a0ba785p1
+cos,-0x1.c830bbc99e229p-39,0x1.379704f5f1eb3p24
+cos,-0x1.c830bbc99e229p-39,-0x1.379704f5f1eb3p24
+cos,0x1.b5daaa233bd5p-3,0x1.3b61dd166d47p2
+cos,0x1.b5daaa233bd5p-3,-0x1.3b61dd166d47p2
+cos,-0x1.ffd00dc4db401p-4,0x1.3c011022acbdp37
+cos,-0x1.ffd00dc4db401p-4,-0x1.3c011022acbdp37
+cos,-0x1.14052b4016ff5p-1,0x1.3e7788e900b7p727
+cos,-0x1.14052b4016ff5p-1,-0x1.3e7788e900b7p727
+cos,0x1.ffffe6a5e4198p-1,0x1.423eafdcc2779p-10
+cos,0x1.ffffe6a5e4198p-1,-0x1.423eafdcc2779p-10
+cos,-0x1.fe09fc3d16feep-6,0x1.4321828c1b538p119
+cos,-0x1.fe09fc3d16feep-6,-0x1.4321828c1b538p119
+cos,0x1.b685d949a27ap-14,0x1.43506cb22975dp22
+cos,0x1.b685d949a27ap-14,-0x1.43506cb22975dp22
+cos,0x1.fe398090e203cp-1,0x1.439f63495786ap67
+cos,0x1.fe398090e203cp-1,-0x1.439f63495786ap67
+cos,0x1.fe6274e000974p-1,0x1.457538a6bd073p-4
+cos,0x1.fe6274e000974p-1,-0x1.457538a6bd073p-4
+cos,0x1.09fcb69359c0ap-1,0x1.478fc08p43
+cos,0x1.09fcb69359c0ap-1,-0x1.478fc08p43
+cos,-0x1.20c2158511e79p-9,0x1.48a45797cbe63p61
+cos,-0x1.20c2158511e79p-9,-0x1.48a45797cbe63p61
+cos,0x1.990d17aae253p-1,0x1.4a62e0e12c173p-1
+cos,0x1.990d17aae253p-1,-0x1.4a62e0e12c173p-1
+cos,0x1.fdd4f1e00b387p-3,0x1.4c596642a9488p9
+cos,0x1.fdd4f1e00b387p-3,-0x1.4c596642a9488p9
+cos,0x1.fe4f141032f38p-1,0x1.4dp-4
+cos,0x1.fe4f141032f38p-1,-0x1.4dp-4
+cos,0x1.94e9f45d43c14p-2,0x1.4f0f308p488
+cos,0x1.94e9f45d43c14p-2,-0x1.4f0f308p488
+cos,0x1.9355f69ad4326p-2,0x1.52f00ep793
+cos,0x1.9355f69ad4326p-2,-0x1.52f00ep793
+cos,0x1.1a19be8bea10ap-1,0x1.52f06c730ec02p2
+cos,0x1.1a19be8bea10ap-1,-0x1.52f06c730ec02p2
+cos,0x1.385d92ec0c734p-1,0x1.53e7d5845fe3dp220
+cos,0x1.385d92ec0c734p-1,-0x1.53e7d5845fe3dp220
+cos,0x1.fffffffffe2f1p-1,0x1.59p-20
+cos,0x1.fffffffffe2f1p-1,-0x1.59p-20
+cos,-0x1.ffd7bc28ded92p-1,0x1.592f1176f098p86
+cos,-0x1.ffd7bc28ded92p-1,-0x1.592f1176f098p86
+cos,-0x1.cee28b3d79799p-1,0x1.5999999dc09dcp1
+cos,-0x1.cee28b3d79799p-1,-0x1.5999999dc09dcp1
+cos,0x1.c1f1eb08c2604p-1,0x1.5bea01p468
+cos,0x1.c1f1eb08c2604p-1,-0x1.5bea01p468
+cos,0x1.fffe35ab09a65p-1,0x1.5cb80a6135e5ap1000
+cos,0x1.fffe35ab09a65p-1,-0x1.5cb80a6135e5ap1000
+cos,-0x1.07b85f606e75dp-3,0x1.5d5be48730d2dp13
+cos,-0x1.07b85f606e75dp-3,-0x1.5d5be48730d2dp13
+cos,0x1.ffffffffff862p-1,0x1.614p-21
+cos,0x1.ffffffffff862p-1,-0x1.614p-21
+cos,-0x1.dd3a806e89cf2p-1,0x1.62adc8a660364p1
+cos,-0x1.dd3a806e89cf2p-1,-0x1.62adc8a660364p1
+cos,-0x1.4308b14f4b6eep-1,0x1.64ef438p142
+cos,-0x1.4308b14f4b6eep-1,-0x1.64ef438p142
+cos,0x1.6623d2eb6add2p-3,0x1.652p0
+cos,0x1.6623d2eb6add2p-3,-0x1.652p0
+cos,0x1.fff832c50f472p-1,0x1.65865b2cb08a2p-7
+cos,0x1.fff832c50f472p-1,-0x1.65865b2cb08a2p-7
+cos,0x1.acc251be33023p-1,0x1.6a937daabc20ep375
+cos,0x1.acc251be33023p-1,-0x1.6a937daabc20ep375
+cos,-0x1.14ae72e6ba22fp-61,0x1.6ac5b262ca1ffp849
+cos,-0x1.14ae72e6ba22fp-61,-0x1.6ac5b262ca1ffp849
+cos,0x1.e0619960a11c6p-2,0x1.6f7bdef7bdef4p3
+cos,0x1.e0619960a11c6p-2,-0x1.6f7bdef7bdef4p3
+cos,0x1.8d23f97901a3p-1,0x1.739ce759ce738p200
+cos,0x1.8d23f97901a3p-1,-0x1.739ce759ce738p200
+cos,0x1.fffff78a14ba1p-1,0x1.7450c3f49d0b2p-11
+cos,0x1.fffff78a14ba1p-1,-0x1.7450c3f49d0b2p-11
+cos,0x1.d6f1c727fb2ccp-4,0x1.749fe53f963fdp0
+cos,0x1.d6f1c727fb2ccp-4,-0x1.749fe53f963fdp0
+cos,-0x1.f284b5028c184p-1,0x1.74af6725c6206p1
+cos,-0x1.f284b5028c184p-1,-0x1.74af6725c6206p1
+cos,-0x1.f3165a0b306b2p-1,0x1.7550d28ffccc4p1
+cos,-0x1.f3165a0b306b2p-1,-0x1.7550d28ffccc4p1
+cos,0x1.d66d2078ebdecp-1,0x1.775e397cd6aap6
+cos,0x1.d66d2078ebdecp-1,-0x1.775e397cd6aap6
+cos,0x1.7af9a13085f53p-1,0x1.799302bf7f29p-1
+cos,0x1.7af9a13085f53p-1,-0x1.799302bf7f29p-1
+cos,0x1.ffdd2fdac0c25p-1,0x1.799fffffffffdp-6
+cos,0x1.ffdd2fdac0c25p-1,-0x1.799fffffffffdp-6
+cos,0x1.fff744f185a73p-1,0x1.7a3692ca9449p-7
+cos,0x1.fff744f185a73p-1,-0x1.7a3692ca9449p-7
+cos,0x1.7a6b326b690fbp-1,0x1.7a66a638ac5b5p-1
+cos,0x1.7a6b326b690fbp-1,-0x1.7a66a638ac5b5p-1
+cos,0x1.671fdb64ffbeep-4,0x1.7ba65462b49ap0
+cos,0x1.671fdb64ffbeep-4,-0x1.7ba65462b49ap0
+cos,0x1.ffa55490f206ep-1,0x1.7cdf37cdf37c9p239
+cos,0x1.ffa55490f206ep-1,-0x1.7cdf37cdf37c9p239
+cos,0x1.4c5b5970a3a49p-4,0x1.7d542565f472ep0
+cos,0x1.4c5b5970a3a49p-4,-0x1.7d542565f472ep0
+cos,0x1.479a5667c63f6p-4,0x1.7da0751649058p0
+cos,0x1.479a5667c63f6p-4,-0x1.7da0751649058p0
+cos,0x1.fff717511dcb5p-1,0x1.7e0ddcda6cc0dp-7
+cos,0x1.fff717511dcb5p-1,-0x1.7e0ddcda6cc0dp-7
+cos,0x1.ffffffffff707p-1,0x1.7f6p-21
+cos,0x1.ffffffffff707p-1,-0x1.7f6p-21
+cos,-0x1.fff9e1554698p-1,0x1.7f90117d44c74p100
+cos,-0x1.fff9e1554698p-1,-0x1.7f90117d44c74p100
+cos,0x1.ffdc006bff7eap-1,0x1.7ffffffffef7ap-6
+cos,0x1.ffdc006bff7eap-1,-0x1.7ffffffffef7ap-6
+cos,0x1.ffdc006bff7e8p-1,0x1.7fffffffffa26p-6
+cos,0x1.ffdc006bff7e8p-1,-0x1.7fffffffffa26p-6
+cos,0x1.ffdc006bff7e7p-1,0x1.7ffffffffff8p-6
+cos,0x1.ffdc006bff7e7p-1,-0x1.7ffffffffff8p-6
+cos,0x1.760718ab44398p-1,0x1.80ep-1
+cos,0x1.760718ab44398p-1,-0x1.80ep-1
+cos,-0x1.0p0,0x1.81ae0dffa3b33p959
+cos,-0x1.0p0,-0x1.81ae0dffa3b33p959
+cos,-0x1.fbdc48125b345p-1,0x1.81d612289c5cfp1
+cos,-0x1.fbdc48125b345p-1,-0x1.81d612289c5cfp1
+cos,0x1.ff9e396651ccap-5,0x1.8220192270a0ep0
+cos,0x1.ff9e396651ccap-5,-0x1.8220192270a0ep0
+cos,0x1.fe2b26dddb5c9p-5,0x1.822bb780e9104p0
+cos,0x1.fe2b26dddb5c9p-5,-0x1.822bb780e9104p0
+cos,0x1.eb87cff7c9115p-5,0x1.82c119c4b8e49p0
+cos,0x1.eb87cff7c9115p-5,-0x1.82c119c4b8e49p0
+cos,0x1.eb87cff7a62b7p-5,0x1.82c119c4b9fc4p0
+cos,0x1.eb87cff7a62b7p-5,-0x1.82c119c4b9fc4p0
+cos,0x1.eb87cff795ab1p-5,0x1.82c119c4ba808p0
+cos,0x1.eb87cff795ab1p-5,-0x1.82c119c4ba808p0
+cos,0x1.de1d17ab0d6a5p-5,0x1.832c9fc76527p0
+cos,0x1.de1d17ab0d6a5p-5,-0x1.832c9fc76527p0
+cos,0x1.dc86e7bec0c45p-5,0x1.833956ce7d1f9p0
+cos,0x1.dc86e7bec0c45p-5,-0x1.833956ce7d1f9p0
+cos,0x1.db03cbb942a7bp-5,0x1.834574eb1c099p0
+cos,0x1.db03cbb942a7bp-5,-0x1.834574eb1c099p0
+cos,0x1.ce431710d1507p-5,0x1.83aba5688e13ep0
+cos,0x1.ce431710d1507p-5,-0x1.83aba5688e13ep0
+cos,0x1.cd46b3a77f6ddp-5,0x1.83b38bbafd75bp0
+cos,0x1.cd46b3a77f6ddp-5,-0x1.83b38bbafd75bp0
+cos,-0x1.ff29bc666bee7p-1,0x1.86a017cb1c31cp16
+cos,-0x1.ff29bc666bee7p-1,-0x1.86a017cb1c31cp16
+cos,-0x1.7968916e4c646p-2,0x1.8720588p392
+cos,-0x1.7968916e4c646p-2,-0x1.8720588p392
+cos,0x1.fb97c7e452918p-1,0x1.88a2288a22888p9
+cos,0x1.fb97c7e452918p-1,-0x1.88a2288a22888p9
+cos,-0x1.ae44a5f01bf63p-1,0x1.8cf013991c308p1000
+cos,-0x1.ae44a5f01bf63p-1,-0x1.8cf013991c308p1000
+cos,0x1.d96e82f71a9dcp-1,0x1.9p-2
+cos,0x1.d96e82f71a9dcp-1,-0x1.9p-2
+cos,0x1.0fd9d5c093df5p-7,0x1.9p0
+cos,0x1.0fd9d5c093df5p-7,-0x1.9p0
+cos,0x1.0fd9d5c05e5fdp-7,0x1.90000000006bp0
+cos,0x1.0fd9d5c05e5fdp-7,-0x1.90000000006bp0
+cos,0x1.bc8be725417d8p-1,0x1.900c206d44162p6
+cos,0x1.bc8be725417d8p-1,-0x1.900c206d44162p6
+cos,0x1.fffffffff63b6p-1,0x1.900c2af7baef3p-19
+cos,0x1.fffffffff63b6p-1,-0x1.900c2af7baef3p-19
+cos,0x1.bd464c9352d11p-1,0x1.900f11bd8955dp6
+cos,0x1.bd464c9352d11p-1,-0x1.900f11bd8955dp6
+cos,0x1.fffffda85cdd1p-1,0x1.910b35c3253d4p100
+cos,0x1.fffffda85cdd1p-1,-0x1.910b35c3253d4p100
+cos,0x1.1a62633145c07p-54,0x1.921fb54442d18p0
+cos,0x1.1a62633145c07p-54,-0x1.921fb54442d18p0
+cos,-0x1.2aeef4b9ea1aep-18,0x1.922p0
+cos,-0x1.2aeef4b9ea1aep-18,-0x1.922p0
+cos,-0x1.ffffffffd9048p-18,0x1.9220354442d18p0
+cos,-0x1.ffffffffd9048p-18,-0x1.9220354442d18p0
+cos,-0x1.0p0,0x1.9251f93aeb59dp12
+cos,-0x1.0p0,-0x1.9251f93aeb59dp12
+cos,0x1.ffb8c4d1f78a8p-1,0x1.943be221d909ap2
+cos,0x1.ffb8c4d1f78a8p-1,-0x1.943be221d909ap2
+cos,0x1.fff6011fdddabp-1,0x1.94af699302875p-7
+cos,0x1.fff6011fdddabp-1,-0x1.94af699302875p-7
+cos,0x1.d7954e7a3ee99p-1,0x1.999999ab7b0edp-2
+cos,0x1.d7954e7a3ee99p-1,-0x1.999999ab7b0edp-2
+cos,0x1.d7954e76c8e31p-1,0x1.999999bd4190bp-2
+cos,0x1.d7954e76c8e31p-1,-0x1.999999bd4190bp-2
+cos,0x1.fa23cfb820224p-1,0x1.9bd0f19479a24p2
+cos,0x1.fa23cfb820224p-1,-0x1.9bd0f19479a24p2
+cos,-0x1.6a09e667f3af1p-1,0x1.9c55835e7e83ep8
+cos,-0x1.6a09e667f3af1p-1,-0x1.9c55835e7e83ep8
+cos,0x1.fff59c1255809p-1,0x1.9c9942b14448dp-7
+cos,0x1.fff59c1255809p-1,-0x1.9c9942b14448dp-7
+cos,0x1.ffece5cab4ca5p-1,0x1.9d3d92485e2b5p523
+cos,0x1.ffece5cab4ca5p-1,-0x1.9d3d92485e2b5p523
+cos,-0x1.ff55301d3a781p-5,0x1.a0d068341a08p1000
+cos,-0x1.ff55301d3a781p-5,-0x1.a0d068341a08p1000
+cos,0x1.5a5615acd0dcp-1,0x1.a7ep-1
+cos,0x1.5a5615acd0dcp-1,-0x1.a7ep-1
+cos,0x1.766ad27a1de5p-14,0x1.a858343863965p119
+cos,0x1.766ad27a1de5p-14,-0x1.a858343863965p119
+cos,0x1.6bd4d5be72494p-1,0x1.ab190633d88eap3
+cos,0x1.6bd4d5be72494p-1,-0x1.ab190633d88eap3
+cos,0x1.ffffffffff4a5p-1,0x1.af4bd2f4bd2fp-21
+cos,0x1.ffffffffff4a5p-1,-0x1.af4bd2f4bd2fp-21
+cos,0x1.7ff2934ad29a8p-1,0x1.afa70300aee6p72
+cos,0x1.7ff2934ad29a8p-1,-0x1.afa70300aee6p72
+cos,0x1.ff866aebdce0ap-1,0x1.b5ab427cffb4cp94
+cos,0x1.ff866aebdce0ap-1,-0x1.b5ab427cffb4cp94
+cos,-0x1.f54f5227a4e84p-60,0x1.b951f1572eba5p23
+cos,-0x1.f54f5227a4e84p-60,-0x1.b951f1572eba5p23
+cos,0x1.fffd06d35579cp-1,0x1.b96e5b96e5b91p-8
+cos,0x1.fffd06d35579cp-1,-0x1.b96e5b96e5b91p-8
+cos,-0x1.7c4128e2aff4cp-1,0x1.ba3b18395d17bp8
+cos,-0x1.7c4128e2aff4cp-1,-0x1.ba3b18395d17bp8
+cos,-0x1.0p0,0x1.bab62ed655019p970
+cos,-0x1.0p0,-0x1.bab62ed655019p970
+cos,0x1.ffffff3e53446p-1,0x1.bd55aa411ab46p-13
+cos,0x1.ffffff3e53446p-1,-0x1.bd55aa411ab46p-13
+cos,-0x1.7fdb07b9f77ep-1,0x1.bd616d4fe95cdp36
+cos,-0x1.7fdb07b9f77ep-1,-0x1.bd616d4fe95cdp36
+cos,0x1.ffcf4da76222dp-1,0x1.beap-6
+cos,0x1.ffcf4da76222dp-1,-0x1.beap-6
+cos,-0x1.ddee13357ec6fp-1,0x1.c11516af585a4p1
+cos,-0x1.ddee13357ec6fp-1,-0x1.c11516af585a4p1
+cos,0x1.58cccec059da2p-1,0x1.c75e54de4c06ep2
+cos,0x1.58cccec059da2p-1,-0x1.c75e54de4c06ep2
+cos,-0x1.0p0,0x1.cb44e86bc192bp648
+cos,-0x1.0p0,-0x1.cb44e86bc192bp648
+cos,0x1.0p0,0x1.cb44e86bc192bp649
+cos,0x1.0p0,-0x1.cb44e86bc192bp649
+cos,-0x1.ca281d7fe44bp-1,0x1.cd5a6f8762affp1
+cos,-0x1.ca281d7fe44bp-1,-0x1.cd5a6f8762affp1
+cos,0x1.e80ad4fe54c72p-5,0x1.d0cb95f02ad77p464
+cos,0x1.e80ad4fe54c72p-5,-0x1.d0cb95f02ad77p464
+cos,0x1.0df8eb409efe4p-1,0x1.d31bd604903ap2
+cos,0x1.0df8eb409efe4p-1,-0x1.d31bd604903ap2
+cos,0x1.ff2ae968efe71p-1,0x1.d32f4610180f6p-5
+cos,0x1.ff2ae968efe71p-1,-0x1.d32f4610180f6p-5
+cos,-0x1.cec307a674d3fp-3,0x1.d96e058p488
+cos,-0x1.cec307a674d3fp-3,-0x1.d96e058p488
+cos,-0x1.ac8dbf9cdc955p-5,0x1.db0803c392b4cp15
+cos,-0x1.ac8dbf9cdc955p-5,-0x1.db0803c392b4cp15
+cos,-0x1.ac94870ca6317p-5,0x1.db0803c3ff51dp15
+cos,-0x1.ac94870ca6317p-5,-0x1.db0803c3ff51dp15
+cos,0x1.ff229073fd8b6p-1,0x1.dc4p-5
+cos,0x1.ff229073fd8b6p-1,-0x1.dc4p-5
+cos,0x1.ff21e5f976p-1,0x1.dcf73dcf73dccp-5
+cos,0x1.ff21e5f976p-1,-0x1.dcf73dcf73dccp-5
+cos,0x1.2f011326420e5p-1,0x1.dffffffffffffp-1
+cos,0x1.2f011326420e5p-1,-0x1.dffffffffffffp-1
+cos,0x1.f72c8e16dbc79p-1,0x1.e123691a7c4bep26
+cos,0x1.f72c8e16dbc79p-1,-0x1.e123691a7c4bep26
+cos,-0x1.4b0c6bb623f58p-2,0x1.e666666f9cf49p0
+cos,-0x1.4b0c6bb623f58p-2,-0x1.e666666f9cf49p0
+cos,0x1.fd74b55875885p-1,0x1.e83accfc50b7p995
+cos,0x1.fd74b55875885p-1,-0x1.e83accfc50b7p995
+cos,0x1.fff169b6ab7d1p-1,0x1.e8ep-7
+cos,0x1.fff169b6ab7d1p-1,-0x1.e8ep-7
+cos,0x1.7d39c9f1b0b3cp-1,0x1.eaf5ea5317442p4
+cos,0x1.7d39c9f1b0b3cp-1,-0x1.eaf5ea5317442p4
+cos,0x1.7f13af7081a68p-1,0x1.eb0c2b00b1b83p4
+cos,0x1.7f13af7081a68p-1,-0x1.eb0c2b00b1b83p4
+cos,-0x1.7ad7b88a1fe1p-1,0x1.ebc6b555311c4p15
+cos,-0x1.7ad7b88a1fe1p-1,-0x1.ebc6b555311c4p15
+cos,0x1.b06b2b58a2a24p-5,0x1.ef7bdef7bdef2p239
+cos,0x1.b06b2b58a2a24p-5,-0x1.ef7bdef7bdef2p239
+cos,0x1.fe6ded53172a7p-1,0x1.efbbeefbbeef8p15
+cos,0x1.fe6ded53172a7p-1,-0x1.efbbeefbbeef8p15
+cos,-0x1.fe2bcb87a7e16p-1,0x1.f07c1f07c1ef7p239
+cos,-0x1.fe2bcb87a7e16p-1,-0x1.f07c1f07c1ef7p239
+cos,-0x1.79d08d6b3a883p-1,0x1.f0f2b5e060b29p1
+cos,-0x1.79d08d6b3a883p-1,-0x1.f0f2b5e060b29p1
+cos,0x1.f0d11d321178ep-1,0x1.f4p-3
+cos,0x1.f0d11d321178ep-1,-0x1.f4p-3
+cos,0x1.e3ff5b15f723ep-4,0x1.f43d49f947e87p9
+cos,0x1.e3ff5b15f723ep-4,-0x1.f43d49f947e87p9
+cos,-0x1.6636c9f6a87aap-1,0x1.f7fffffffffffp1
+cos,-0x1.6636c9f6a87aap-1,-0x1.f7fffffffffffp1
+cos,0x1.ffc1be3309286p-1,0x1.f8fffffffffffp-6
+cos,0x1.ffc1be3309286p-1,-0x1.f8fffffffffffp-6
+cos,0x1.ffc1be3309285p-1,0x1.f9p-6
+cos,0x1.ffc1be3309285p-1,-0x1.f9p-6
+cos,-0x1.fffffffcab0d6p-1,0x1.fa0236523ce54p344
+cos,-0x1.fffffffcab0d6p-1,-0x1.fa0236523ce54p344
+cos,0x1.fc0d98ace2308p-1,0x1.fceab54d37dap-4
+cos,0x1.fc0d98ace2308p-1,-0x1.fceab54d37dap-4
+cos,-0x1.9589bca128b92p-4,0x1.fd0072fffffffp2
+cos,-0x1.9589bca128b92p-4,-0x1.fd0072fffffffp2
+cos,-0x1.4d304b07fc898p-2,0x1.fe0f827673422p62
+cos,-0x1.4d304b07fc898p-2,-0x1.fe0f827673422p62
+cos,0x1.c1a27ae836f13p-1,0x1.feb1f7920e248p-2
+cos,0x1.c1a27ae836f13p-1,-0x1.feb1f7920e248p-2
+cos,-0x1.936b64e955979p-1,0x1.feeffffffffc6p995
+cos,-0x1.936b64e955979p-1,-0x1.feeffffffffc6p995
+cos,0x1.fff007147ea57p-1,0x1.ff8ffffffffffp-7
+cos,0x1.fff007147ea57p-1,-0x1.ff8ffffffffffp-7
+cos,0x1.ffffc01bfe443p-1,0x1.ff8ffffffffffp-10
+cos,0x1.ffffc01bfe443p-1,-0x1.ff8ffffffffffp-10
+cos,0x1.7cc9fb75317aep-1,0x1.ff8ffffffffffp870
+cos,0x1.7cc9fb75317aep-1,-0x1.ff8ffffffffffp870
+cos,0x1.d6aea48015589p-1,0x1.ffcfff8p19
+cos,0x1.d6aea48015589p-1,-0x1.ffcfff8p19
+cos,-0x1.6a9972eee19bbp-2,0x1.ffcfff8p365
+cos,-0x1.6a9972eee19bbp-2,-0x1.ffcfff8p365
+cos,-0x1.3aaa15f7544b7p-1,0x1.ffcffffffff6cp720
+cos,-0x1.3aaa15f7544b7p-1,-0x1.ffcffffffff6cp720
+cos,0x1.3f164bce055c5p-1,0x1.ffcfffffffff9p320
+cos,0x1.3f164bce055c5p-1,-0x1.ffcfffffffff9p320
+cos,0x1.fffff002fff15p-1,0x1.ffcffffffffffp-11
+cos,0x1.fffff002fff15p-1,-0x1.ffcffffffffffp-11
+cos,-0x1.ffffff987f986p-1,0x1.ffcffffffffffp405
+cos,-0x1.ffffff987f986p-1,-0x1.ffcffffffffffp405
+cos,-0x1.ffff6235a25eep-1,0x1.ffcffffffffffp567
+cos,-0x1.ffff6235a25eep-1,-0x1.ffcffffffffffp567
+cos,0x1.fdf11ae4608b1p-3,0x1.ffefff8ffffffp16
+cos,0x1.fdf11ae4608b1p-3,-0x1.ffefff8ffffffp16
+cos,0x1.8f5525ab4583cp-1,0x1.ffeffffffffccp995
+cos,0x1.8f5525ab4583cp-1,-0x1.ffeffffffffccp995
+cos,0x1.a0af44a45c057p-8,0x1.ffeffffffffffp77
+cos,0x1.a0af44a45c057p-8,-0x1.ffeffffffffffp77
+cos,-0x1.df7546c31bf8dp-1,0x1.ffeffffffffffp122
+cos,-0x1.df7546c31bf8dp-1,-0x1.ffeffffffffffp122
+cos,-0x1.825a7bea27d5bp-1,0x1.ffeffffffffffp179
+cos,-0x1.825a7bea27d5bp-1,-0x1.ffeffffffffffp179
+cos,-0x1.1be2ab2078d54p-1,0x1.ffeffffffffffp238
+cos,-0x1.1be2ab2078d54p-1,-0x1.ffeffffffffffp238
+cos,-0x1.a4cc5f838f529p-7,0x1.fff0000002511p492
+cos,-0x1.a4cc5f838f529p-7,-0x1.fff0000002511p492
+cos,0x1.f16437d6119f9p-10,0x1.fff1fffffffffp41
+cos,0x1.f16437d6119f9p-10,-0x1.fff1fffffffffp41
+cos,0x1.898324c2f1cfcp-11,0x1.ffffc7fffffffp45
+cos,0x1.898324c2f1cfcp-11,-0x1.ffffc7fffffffp45
+cos,0x1.f0154c00688f8p-1,0x1.ffffdf1ffffffp-3
+cos,0x1.f0154c00688f8p-1,-0x1.ffffdf1ffffffp-3
+cos,0x1.ffc00157126a8p-1,0x1.fffff8fffffffp-6
+cos,0x1.ffc00157126a8p-1,-0x1.fffff8fffffffp-6
+cos,-0x1.e0d9f0f38c73fp-2,0x1.fffffbfffffffp968
+cos,-0x1.e0d9f0f38c73fp-2,-0x1.fffffbfffffffp968
+cos,0x1.fff4699dd560bp-1,0x1.fffffcfffffffp40
+cos,0x1.fff4699dd560bp-1,-0x1.fffffcfffffffp40
+cos,0x1.ff0015559f228p-1,0x1.ffffff000004p-5
+cos,0x1.ff0015559f228p-1,-0x1.ffffff000004p-5
+cos,-0x1.9c6951cccd39cp-2,0x1.ffffff8p119
+cos,-0x1.9c6951cccd39cp-2,-0x1.ffffff8p119
+cos,-0x1.f2c2263590035p-1,0x1.ffffff8p192
+cos,-0x1.f2c2263590035p-1,-0x1.ffffff8p192
+cos,0x1.c7884d6cfb551p-1,0x1.ffffff8p543
+cos,0x1.c7884d6cfb551p-1,-0x1.ffffff8p543
+cos,0x1.e66c79e776a1fp-2,0x1.ffffffc3fffffp500
+cos,0x1.e66c79e776a1fp-2,-0x1.ffffffc3fffffp500
+cos,0x1.c7c9a9c57c0b2p-3,0x1.ffffffe1fffffp700
+cos,0x1.c7c9a9c57c0b2p-3,-0x1.ffffffe1fffffp700
+cos,0x1.7bb28daf5f9aep-1,0x1.ffffffff0f0ffp400
+cos,0x1.7bb28daf5f9aep-1,-0x1.ffffffff0f0ffp400
+cos,0x1.fc015527d8bb3p-1,0x1.ffffffff3ffffp-4
+cos,0x1.fc015527d8bb3p-1,-0x1.ffffffff3ffffp-4
+cos,-0x1.ea5257eb66e3cp-1,0x1.ffffffff8ffffp3
+cos,-0x1.ea5257eb66e3cp-1,-0x1.ffffffff8ffffp3
+cos,-0x1.4eaa606dbef97p-1,0x1.fffffffffbcffp1
+cos,-0x1.4eaa606dbef97p-1,-0x1.fffffffffbcffp1
+cos,-0x1.fc9cd6b5f0095p-1,0x1.fffffffffe0b5p720
+cos,-0x1.fc9cd6b5f0095p-1,-0x1.fffffffffe0b5p720
+cos,0x1.e96ac045dd139p-3,0x1.fffffffffe7ffp41
+cos,0x1.e96ac045dd139p-3,-0x1.fffffffffe7ffp41
+cos,-0x1.fcaf39cfb94d5p-1,0x1.fffffffffee09p720
+cos,-0x1.fcaf39cfb94d5p-1,-0x1.fffffffffee09p720
+cos,0x1.8432232a6d1dap-1,0x1.ffffffffffdffp40
+cos,0x1.8432232a6d1dap-1,-0x1.ffffffffffdffp40
+cos,0x1.9e375143139dap-6,0x1.ffffffffffeffp41
+cos,0x1.9e375143139dap-6,-0x1.ffffffffffeffp41
+cos,0x1.fffc000155552p-1,0x1.fffffffffff4ap-8
+cos,0x1.fffc000155552p-1,-0x1.fffffffffff4ap-8
+cos,0x1.463a895c4ea5dp-1,0x1.fffffffffff78p920
+cos,0x1.463a895c4ea5dp-1,-0x1.fffffffffff78p920
+cos,0x1.3c1a48635cf38p-1,0x1.fffffffffffd5p995
+cos,0x1.3c1a48635cf38p-1,-0x1.fffffffffffd5p995
+cos,0x1.91c4e0708bd48p-1,0x1.fffffffffffe8p720
+cos,0x1.91c4e0708bd48p-1,-0x1.fffffffffffe8p720
+cos,-0x1.3e15cb849b5eap-1,0x1.fffffffffffebp920
+cos,-0x1.3e15cb849b5eap-1,-0x1.fffffffffffebp920
+cos,-0x1.816808349b80ep-1,0x1.ffffffffffff1p245
+cos,-0x1.816808349b80ep-1,-0x1.ffffffffffff1p245
+cos,0x1.4699c814c5f07p-1,0x1.ffffffffffff4p845
+cos,0x1.4699c814c5f07p-1,-0x1.ffffffffffff4p845
+cos,-0x1.815e92b7a2a01p-1,0x1.ffffffffffff4p1020
+cos,-0x1.815e92b7a2a01p-1,-0x1.ffffffffffff4p1020
+cos,-0x1.3e8d028153202p-10,0x1.ffffffffffffcp45
+cos,-0x1.3e8d028153202p-10,-0x1.ffffffffffffcp45
+cos,0x1.7d6765714c786p-1,0x1.ffffffffffffep105
+cos,0x1.7d6765714c786p-1,-0x1.ffffffffffffep105
+cos,-0x1.f869fb14d2569p-3,0x1.ffffffffffffep480
+cos,-0x1.f869fb14d2569p-3,-0x1.ffffffffffffep480
+cos,-0x1.80a75b369d3c4p-1,0x1.ffffffffffffep970
+cos,-0x1.80a75b369d3c4p-1,-0x1.ffffffffffffep970
+cos,-0x1.9dba69e853bd8p-4,0x1.0000000000001p42
+cos,-0x1.9dba69e853bd8p-4,-0x1.0000000000001p42
+cos,0x1.0p0,-0x0.0000000000001p-1022
+cos,0x1.0p0,0x0.0000000000001p-1022
+cos,0x1.0p0,-0x0.0p0
+cos,0x1.0p0,0x0.0000000000001p-1022
+cos,0x1.0p0,-0x0.0000000000001p-1022
+cos,0x1.0p0,-0x1.0000000000001p-1022
+cos,0x1.0p0,0x1.0000000000001p-1022
+cos,0x1.0p0,-0x1.0p-1022
+cos,0x1.0p0,0x1.0p-1022
+cos,0x1.0p0,-0x0.fffffffffffffp-1022
+cos,0x1.0p0,0x0.fffffffffffffp-1022
+cos,0x1.0p0,0x0.fffffffffffffp-1022
+cos,0x1.0p0,-0x0.fffffffffffffp-1022
+cos,0x1.0p0,0x1.0p-1022
+cos,0x1.0p0,-0x1.0p-1022
+cos,0x1.0p0,0x1.0000000000001p-1022
+cos,0x1.0p0,-0x1.0000000000001p-1022
+cos,0x1.ffffff5c28f5dp-1,0x1.999999999999ap-13
+cos,0x1.ffffff5c28f5dp-1,-0x1.999999999999ap-13
+cos,0x1.fffffd70a3d79p-1,0x1.999999999999ap-12
+cos,0x1.fffffd70a3d79p-1,-0x1.999999999999ap-12
+cos,0x1.fffffa3d70a6ap-1,0x1.3333333333334p-11
+cos,0x1.fffffa3d70a6ap-1,-0x1.3333333333334p-11
+cos,0x1.fffff5c28f64ep-1,0x1.999999999999ap-11
+cos,0x1.fffff5c28f64ep-1,-0x1.999999999999ap-11
+cos,0x1.fffff00000155p-1,0x1.0p-10
+cos,0x1.fffff00000155p-1,-0x1.0p-10
+cos,0x1.ffffe8f5c2bbap-1,0x1.3333333333333p-10
+cos,0x1.ffffe8f5c2bbap-1,-0x1.3333333333333p-10
+cos,0x1.ffffe0a3d75c3p-1,0x1.6666666666666p-10
+cos,0x1.ffffe0a3d75c3p-1,-0x1.6666666666666p-10
+cos,0x1.ffffd70a3dfc7p-1,0x1.9999999999999p-10
+cos,0x1.ffffd70a3dfc7p-1,-0x1.9999999999999p-10
+cos,0x1.ffffcc28f6a28p-1,0x1.cccccccccccccp-10
+cos,0x1.ffffcc28f6a28p-1,-0x1.cccccccccccccp-10
+cos,0x1.fffbcc2a6e87p-1,0x1.0666666666666p-7
+cos,0x1.fffbcc2a6e87p-1,-0x1.0666666666666p-7
+cos,0x1.fff30a4b6fcc1p-1,0x1.cccccccccccccp-7
+cos,0x1.fff30a4b6fcc1p-1,-0x1.cccccccccccccp-7
+cos,0x1.ffe57a780f38cp-1,0x1.4999999999999p-6
+cos,0x1.ffe57a780f38cp-1,-0x1.4999999999999p-6
+cos,0x1.ffd31cd0e1d63p-1,0x1.accccccccccccp-6
+cos,0x1.ffd31cd0e1d63p-1,-0x1.accccccccccccp-6
+cos,0x1.ffbbf18207543p-1,0x1.08p-5
+cos,0x1.ffbbf18207543p-1,-0x1.08p-5
+cos,0x1.ff9ff8c3299f5p-1,0x1.399999999999ap-5
+cos,0x1.ff9ff8c3299f5p-1,-0x1.399999999999ap-5
+cos,0x1.ff7f32d77c5b2p-1,0x1.6b33333333334p-5
+cos,0x1.ff7f32d77c5b2p-1,-0x1.6b33333333334p-5
+cos,0x1.ff59a00dbc409p-1,0x1.9cccccccccccep-5
+cos,0x1.ff59a00dbc409p-1,-0x1.9cccccccccccep-5
+cos,0x1.ff2f40c02e60fp-1,0x1.ce66666666666p-5
+cos,0x1.ff2f40c02e60fp-1,-0x1.ce66666666666p-5
+cos,0x1.8ca46c7d8975ep-1,0x1.5e7fc4369bdadp-1
+cos,0x1.8ca46c7d8975ep-1,-0x1.5e7fc4369bdadp-1
+cos,0x1.0b5d3802fc799p-2,0x1.4e7fc4369bdadp0
+cos,0x1.0b5d3802fc799p-2,-0x1.4e7fc4369bdadp0
+cos,-0x1.66b96f53323afp-2,0x1.edbfa651e9c84p0
+cos,-0x1.66b96f53323afp-2,-0x1.edbfa651e9c84p0
+cos,-0x1.a93554888c33p-1,0x1.467fc4369bdadp1
+cos,-0x1.a93554888c33p-1,-0x1.467fc4369bdadp1
+cos,-0x1.ffc00155527d3p-1,0x1.961fb54442d18p1
+cos,-0x1.ffc00155527d3p-1,-0x1.961fb54442d18p1
+cos,-0x1.96907c5c7c25cp-1,0x1.e5bfa651e9c83p1
+cos,-0x1.96907c5c7c25cp-1,-0x1.e5bfa651e9c83p1
+cos,-0x1.2a1e5a50f948dp-2,0x1.1aafcbafc85f7p2
+cos,-0x1.2a1e5a50f948dp-2,-0x1.1aafcbafc85f7p2
+cos,0x1.4894f695dc56cp-2,0x1.427fc4369bdadp2
+cos,0x1.4894f695dc56cp-2,-0x1.427fc4369bdadp2
+cos,0x1.a016ea3a692cep-1,0x1.6a4fbcbd6f562p2
+cos,0x1.a016ea3a692cep-1,-0x1.6a4fbcbd6f562p2
+cos,0x1.a30a69f5537ecp-1,0x1.6af2eff0a2896p2
+cos,0x1.a30a69f5537ecp-1,-0x1.6af2eff0a2896p2
+cos,0x1.5bd62e8b04ad6p-2,0x1.43c62a9d02414p2
+cos,0x1.5bd62e8b04ad6p-2,-0x1.43c62a9d02414p2
+cos,-0x1.0cb71f671e634p-2,0x1.1c99654961f92p2
+cos,-0x1.0cb71f671e634p-2,-0x1.1c99654961f92p2
+cos,-0x1.89d86aa8521c1p-1,0x1.ead93feb8361fp1
+cos,-0x1.89d86aa8521c1p-1,-0x1.ead93feb8361fp1
+cos,-0x1.fe51ac554a16bp-1,0x1.9c7fb54442d1ap1
+cos,-0x1.fe51ac554a16bp-1,-0x1.9c7fb54442d1ap1
+cos,-0x1.b97c04d08bc5dp-1,0x1.4e262a9d02415p1
+cos,-0x1.b97c04d08bc5dp-1,-0x1.4e262a9d02415p1
+cos,-0x1.a8ac8a3e58f6dp-2,0x1.ff993feb8362p0
+cos,-0x1.a8ac8a3e58f6dp-2,-0x1.ff993feb8362p0
+cos,0x1.77a8b9b3d254bp-3,0x1.62e62a9d02416p0
+cos,0x1.77a8b9b3d254bp-3,-0x1.62e62a9d02416p0
+cos,0x1.6e1061205dd79p-1,0x1.8c662a9d02419p-1
+cos,0x1.6e1061205dd79p-1,-0x1.8c662a9d02419p-1
+cos,-0x1.682f3cc3c7a09p-4,-0x1.a8aa1d11c44ffp0
+cos,-0x1.682f3cc3c7a09p-4,0x1.a8aa1d11c44ffp0
+cos,-0x1.e6669a270c36dp-7,-0x1.95ec8b9e03d54p0
+cos,-0x1.e6669a270c36dp-7,0x1.95ec8b9e03d54p0
+cos,0x1.ddd1ec25e209fp-5,-0x1.832efa2a435a9p0
+cos,0x1.ddd1ec25e209fp-5,0x1.832efa2a435a9p0
+cos,0x1.0cab9115640dap-3,-0x1.707168b682dfep0
+cos,0x1.0cab9115640dap-3,0x1.707168b682dfep0
+cos,0x1.a0723a95492eep-3,-0x1.5db3d742c2653p0
+cos,0x1.a0723a95492eep-3,0x1.5db3d742c2653p0
+cos,0x1.18fee96a1a586p-2,-0x1.4af645cf01ea8p0
+cos,0x1.18fee96a1a586p-2,0x1.4af645cf01ea8p0
+cos,0x1.6043621b13be3p-2,-0x1.3838b45b416fdp0
+cos,0x1.6043621b13be3p-2,0x1.3838b45b416fdp0
+cos,0x1.a5a4ccf40d9dap-2,-0x1.257b22e780f52p0
+cos,0x1.a5a4ccf40d9dap-2,0x1.257b22e780f52p0
+cos,0x1.e8c405f36f85cp-2,-0x1.12bd9173c07abp0
+cos,0x1.e8c405f36f85cp-2,0x1.12bd9173c07abp0
+cos,0x1.26976a6c4e0f8p-1,-0x1.ea5c3ed5b385p-1
+cos,0x1.26976a6c4e0f8p-1,0x1.ea5c3ed5b385p-1
+cos,0x1.3805a1882009fp-1,-0x1.d4b87dab670ap-1
+cos,0x1.3805a1882009fp-1,0x1.d4b87dab670ap-1
+cos,0x1.48e52e0a65bcbp-1,-0x1.bf14bc811a8fp-1
+cos,0x1.48e52e0a65bcbp-1,0x1.bf14bc811a8fp-1
+cos,0x1.592e58ea0a9efp-1,-0x1.a970fb56ce14p-1
+cos,0x1.592e58ea0a9efp-1,0x1.a970fb56ce14p-1
+cos,0x1.68d9afe052d1fp-1,-0x1.93cd3a2c8199p-1
+cos,0x1.68d9afe052d1fp-1,0x1.93cd3a2c8199p-1
+cos,0x1.77e008d0775e7p-1,-0x1.7e297902351ep-1
+cos,0x1.77e008d0775e7p-1,0x1.7e297902351ep-1
+cos,0x1.863a850e438fep-1,-0x1.6885b7d7e8a3p-1
+cos,0x1.863a850e438fep-1,0x1.6885b7d7e8a3p-1
+cos,0x1.93e2948233fcep-1,-0x1.52e1f6ad9c28p-1
+cos,0x1.93e2948233fcep-1,0x1.52e1f6ad9c28p-1
+cos,0x1.a0d1f8a9a791dp-1,-0x1.3d3e35834fadp-1
+cos,0x1.a0d1f8a9a791dp-1,0x1.3d3e35834fadp-1
+cos,0x1.bc6bd861e13dep-1,-0x1.0a0b02501c799p-1
+cos,0x1.bc6bd861e13dep-1,0x1.0a0b02501c799p-1
+cos,0x1.ca59c6fa3d9cep-1,-0x1.d8f7208e6b82cp-2
+cos,0x1.ca59c6fa3d9cep-1,0x1.d8f7208e6b82cp-2
+cos,0x1.d6c0b125791dp-1,-0x1.9dd83c7c9e126p-2
+cos,0x1.d6c0b125791dp-1,0x1.9dd83c7c9e126p-2
+cos,0x1.e196026182986p-1,-0x1.62b9586ad0a2p-2
+cos,0x1.e196026182986p-1,0x1.62b9586ad0a2p-2
+cos,0x1.ead07cc635696p-1,-0x1.279a74590331ap-2
+cos,0x1.ead07cc635696p-1,0x1.279a74590331ap-2
+cos,0x1.f26840e7b2189p-1,-0x1.d8f7208e6b829p-3
+cos,0x1.f26840e7b2189p-1,0x1.d8f7208e6b829p-3
+cos,0x1.f856d48db797ep-1,-0x1.62b9586ad0a1ep-3
+cos,0x1.f856d48db797ep-1,0x1.62b9586ad0a1ep-3
+cos,0x1.fc97283a42479p-1,-0x1.d8f7208e6b826p-4
+cos,0x1.fc97283a42479p-1,0x1.d8f7208e6b826p-4
+cos,0x1.ff259b7ab9f5p-1,-0x1.d8f7208e6b82dp-5
+cos,0x1.ff259b7ab9f5p-1,0x1.d8f7208e6b82dp-5
+cos,0x1.ff259b7ab9f5p-1,0x1.d8f7208e6b82dp-5
+cos,0x1.ff259b7ab9f5p-1,-0x1.d8f7208e6b82dp-5
+cos,0x1.fc97283a42479p-1,0x1.d8f7208e6b82dp-4
+cos,0x1.fc97283a42479p-1,-0x1.d8f7208e6b82dp-4
+cos,0x1.f856d48db797ep-1,0x1.62b9586ad0a22p-3
+cos,0x1.f856d48db797ep-1,-0x1.62b9586ad0a22p-3
+cos,0x1.f26840e7b2189p-1,0x1.d8f7208e6b82dp-3
+cos,0x1.f26840e7b2189p-1,-0x1.d8f7208e6b82dp-3
+cos,0x1.ead07cc635696p-1,0x1.279a74590331cp-2
+cos,0x1.ead07cc635696p-1,-0x1.279a74590331cp-2
+cos,0x1.e196026182985p-1,0x1.62b9586ad0a22p-2
+cos,0x1.e196026182985p-1,-0x1.62b9586ad0a22p-2
+cos,0x1.d6c0b125791dp-1,0x1.9dd83c7c9e128p-2
+cos,0x1.d6c0b125791dp-1,-0x1.9dd83c7c9e128p-2
+cos,0x1.ca59c6fa3d9cep-1,0x1.d8f7208e6b82ep-2
+cos,0x1.ca59c6fa3d9cep-1,-0x1.d8f7208e6b82ep-2
+cos,0x1.bc6bd861e13dep-1,0x1.0a0b02501c799p-1
+cos,0x1.bc6bd861e13dep-1,-0x1.0a0b02501c799p-1
+cos,0x1.a0d1f8a9a792p-1,0x1.3d3e35834faccp-1
+cos,0x1.a0d1f8a9a792p-1,-0x1.3d3e35834faccp-1
+cos,0x1.93e2948233fd1p-1,0x1.52e1f6ad9c27cp-1
+cos,0x1.93e2948233fd1p-1,-0x1.52e1f6ad9c27cp-1
+cos,0x1.863a850e439p-1,0x1.6885b7d7e8a2cp-1
+cos,0x1.863a850e439p-1,-0x1.6885b7d7e8a2cp-1
+cos,0x1.77e008d0775eap-1,0x1.7e297902351dcp-1
+cos,0x1.77e008d0775eap-1,-0x1.7e297902351dcp-1
+cos,0x1.68d9afe052d22p-1,0x1.93cd3a2c8198cp-1
+cos,0x1.68d9afe052d22p-1,-0x1.93cd3a2c8198cp-1
+cos,0x1.592e58ea0a9f2p-1,0x1.a970fb56ce13cp-1
+cos,0x1.592e58ea0a9f2p-1,-0x1.a970fb56ce13cp-1
+cos,0x1.48e52e0a65bcep-1,0x1.bf14bc811a8ecp-1
+cos,0x1.48e52e0a65bcep-1,-0x1.bf14bc811a8ecp-1
+cos,0x1.3805a188200a2p-1,0x1.d4b87dab6709cp-1
+cos,0x1.3805a188200a2p-1,-0x1.d4b87dab6709cp-1
+cos,0x1.26976a6c4e0fcp-1,0x1.ea5c3ed5b384cp-1
+cos,0x1.26976a6c4e0fcp-1,-0x1.ea5c3ed5b384cp-1
+cos,0x1.e8c405f36f85cp-2,0x1.12bd9173c07abp0
+cos,0x1.e8c405f36f85cp-2,-0x1.12bd9173c07abp0
+cos,0x1.a5a4ccf40d9cbp-2,0x1.257b22e780f56p0
+cos,0x1.a5a4ccf40d9cbp-2,-0x1.257b22e780f56p0
+cos,0x1.6043621b13bd4p-2,0x1.3838b45b41701p0
+cos,0x1.6043621b13bd4p-2,-0x1.3838b45b41701p0
+cos,0x1.18fee96a1a576p-2,0x1.4af645cf01eacp0
+cos,0x1.18fee96a1a576p-2,-0x1.4af645cf01eacp0
+cos,0x1.a0723a95492cfp-3,0x1.5db3d742c2657p0
+cos,0x1.a0723a95492cfp-3,-0x1.5db3d742c2657p0
+cos,0x1.0cab9115640bap-3,0x1.707168b682e02p0
+cos,0x1.0cab9115640bap-3,-0x1.707168b682e02p0
+cos,0x1.ddd1ec25e201fp-5,0x1.832efa2a435adp0
+cos,0x1.ddd1ec25e201fp-5,-0x1.832efa2a435adp0
+cos,-0x1.e6669a270c56dp-7,0x1.95ec8b9e03d58p0
+cos,-0x1.e6669a270c56dp-7,-0x1.95ec8b9e03d58p0
+cos,-0x1.682f3cc3c7a09p-4,0x1.a8aa1d11c44ffp0
+cos,-0x1.682f3cc3c7a09p-4,-0x1.a8aa1d11c44ffp0
+cos,0x1.0cb3469a29ea6p-1,0x1.04aff6d330942p0
+cos,0x1.0cb3469a29ea6p-1,-0x1.04aff6d330942p0
+cos,0x1.0cb228fa7f811p-1,0x1.04b09e98dcdb4p0
+cos,0x1.0cb228fa7f811p-1,-0x1.04b09e98dcdb4p0
+cos,0x1.0cb10b5a61b06p-1,0x1.04b1465e89226p0
+cos,0x1.0cb10b5a61b06p-1,-0x1.04b1465e89226p0
+cos,0x1.0cafedb9d078bp-1,0x1.04b1ee2435698p0
+cos,0x1.0cafedb9d078bp-1,-0x1.04b1ee2435698p0
+cos,0x1.0caed018cbda8p-1,0x1.04b295e9e1b0ap0
+cos,0x1.0caed018cbda8p-1,-0x1.04b295e9e1b0ap0
+cos,0x1.0cadb27753d65p-1,0x1.04b33daf8df7cp0
+cos,0x1.0cadb27753d65p-1,-0x1.04b33daf8df7cp0
+cos,0x1.0cac94d5686cbp-1,0x1.04b3e5753a3eep0
+cos,0x1.0cac94d5686cbp-1,-0x1.04b3e5753a3eep0
+cos,0x1.0cab7733099dfp-1,0x1.04b48d3ae686p0
+cos,0x1.0cab7733099dfp-1,-0x1.04b48d3ae686p0
+cos,0x1.0caa5990376bp-1,0x1.04b5350092ccfp0
+cos,0x1.0caa5990376bp-1,-0x1.04b5350092ccfp0
+cos,0x1.0p0,-0x0.0000000000001p-1022
+cos,0x1.0p0,0x0.0000000000001p-1022
+cos,0x1.0p0,-0x0.0p0
+cos,0x1.0p0,0x0.0000000000001p-1022
+cos,0x1.0p0,-0x0.0000000000001p-1022
+cos,0x1.ad02c771c35edp-1,0x1.279a74590331bp-1
+cos,0x1.ad02c771c35edp-1,-0x1.279a74590331bp-1
+cos,0x1.ad02c771c35edp-1,0x1.279a74590331cp-1
+cos,0x1.ad02c771c35edp-1,-0x1.279a74590331cp-1
+cos,0x1.ad02c771c35ecp-1,0x1.279a74590331dp-1
+cos,0x1.ad02c771c35ecp-1,-0x1.279a74590331dp-1
+cos,-0x1.48d1ddd2b2b4p-3,0x1.bb67ae8584ca9p0
+cos,-0x1.48d1ddd2b2b4p-3,-0x1.bb67ae8584ca9p0
+cos,-0x1.48d1ddd2b2b47p-3,0x1.bb67ae8584caap0
+cos,-0x1.48d1ddd2b2b47p-3,-0x1.bb67ae8584caap0
+cos,-0x1.48d1ddd2b2b4fp-3,0x1.bb67ae8584cabp0
+cos,-0x1.48d1ddd2b2b4fp-3,-0x1.bb67ae8584cabp0
+cos,0x1.cfc6cfa52adap-1,0x1.bffffffffffffp-2
+cos,0x1.cfc6cfa52adap-1,-0x1.bffffffffffffp-2
+cos,0x1.cfc6cfa52ad9fp-1,0x1.cp-2
+cos,0x1.cfc6cfa52ad9fp-1,-0x1.cp-2
+cos,0x1.cfc6cfa52ad9fp-1,0x1.c000000000001p-2
+cos,0x1.cfc6cfa52ad9fp-1,-0x1.c000000000001p-2
+cos,0x1.8bb105a5dc901p-1,0x1.5ffffffffffffp-1
+cos,0x1.8bb105a5dc901p-1,-0x1.5ffffffffffffp-1
+cos,0x1.8bb105a5dc9p-1,0x1.6p-1
+cos,0x1.8bb105a5dc9p-1,-0x1.6p-1
+cos,0x1.8bb105a5dc9p-1,0x1.6000000000001p-1
+cos,0x1.8bb105a5dc9p-1,-0x1.6000000000001p-1
+cos,0x1.7ef4842f0bcd1p-2,0x1.2ffffffffffffp0
+cos,0x1.7ef4842f0bcd1p-2,-0x1.2ffffffffffffp0
+cos,0x1.7ef4842f0bccdp-2,0x1.3p0
+cos,0x1.7ef4842f0bccdp-2,-0x1.3p0
+cos,0x1.7ef4842f0bccap-2,0x1.3000000000001p0
+cos,0x1.7ef4842f0bccap-2,-0x1.3000000000001p0
+cos,-0x1.863efa361dc22p-1,0x1.37fffffffffffp1
+cos,-0x1.863efa361dc22p-1,-0x1.37fffffffffffp1
+cos,-0x1.863efa361dc25p-1,0x1.38p1
+cos,-0x1.863efa361dc25p-1,-0x1.38p1
+cos,-0x1.863efa361dc28p-1,0x1.3800000000001p1
+cos,-0x1.863efa361dc28p-1,-0x1.3800000000001p1
+cos,0x1.fef2b2d21cf6cp-1,0x1.069c8b46b3792p-4
+cos,0x1.fef2b2d21cf6cp-1,-0x1.069c8b46b3792p-4
+cos,0x1.fbcbe693bd8edp-1,0x1.069c8b46b3792p-3
+cos,0x1.fbcbe693bd8edp-1,-0x1.069c8b46b3792p-3
+cos,0x1.f68eebfcbb5e8p-1,0x1.89ead0ea0d35bp-3
+cos,0x1.f68eebfcbb5e8p-1,-0x1.89ead0ea0d35bp-3
+cos,0x1.ef4145b4aedp-1,0x1.069c8b46b3792p-2
+cos,0x1.ef4145b4aedp-1,-0x1.069c8b46b3792p-2
+cos,0x1.e5eaa286fbbc6p-1,0x1.4843ae1860576p-2
+cos,0x1.e5eaa286fbbc6p-1,-0x1.4843ae1860576p-2
+cos,0x1.da94d54dd4c08p-1,0x1.89ead0ea0d35ap-2
+cos,0x1.da94d54dd4c08p-1,-0x1.89ead0ea0d35ap-2
+cos,0x1.cd4bca9cb5c71p-1,0x1.cb91f3bbba13ep-2
+cos,0x1.cd4bca9cb5c71p-1,-0x1.cb91f3bbba13ep-2
+cos,0x1.be1d7c3534c4p-1,0x1.069c8b46b3791p-1
+cos,0x1.be1d7c3534c4p-1,-0x1.069c8b46b3791p-1
+cos,0x1.ad19e2535aa96p-1,0x1.27701caf89e83p-1
+cos,0x1.ad19e2535aa96p-1,-0x1.27701caf89e83p-1
+cos,0x1.9a52e2e0fbcb4p-1,0x1.4843ae1860575p-1
+cos,0x1.9a52e2e0fbcb4p-1,-0x1.4843ae1860575p-1
+cos,0x1.85dc3ea1bbceap-1,0x1.69173f8136c67p-1
+cos,0x1.85dc3ea1bbceap-1,-0x1.69173f8136c67p-1
+cos,0x1.6fcb7c6b8b91ap-1,0x1.89ead0ea0d359p-1
+cos,0x1.6fcb7c6b8b91ap-1,-0x1.89ead0ea0d359p-1
+cos,0x1.5837d2817cf3p-1,0x1.aabe6252e3a4bp-1
+cos,0x1.5837d2817cf3p-1,-0x1.aabe6252e3a4bp-1
+cos,0x1.3f3a0e28bedd4p-1,0x1.cb91f3bbba13dp-1
+cos,0x1.3f3a0e28bedd4p-1,-0x1.cb91f3bbba13dp-1
+cos,0x1.24ec799171643p-1,0x1.ec6585249082fp-1
+cos,0x1.24ec799171643p-1,-0x1.ec6585249082fp-1
+cos,0x1.096ac02ec42c8p-1,0x1.069c8b46b3791p0
+cos,0x1.096ac02ec42c8p-1,-0x1.069c8b46b3791p0
+cos,0x1.d9a3a336edb76p-2,0x1.170653fb1eb0ap0
+cos,0x1.d9a3a336edb76p-2,-0x1.170653fb1eb0ap0
+cos,0x1.9e7f8652b4758p-2,0x1.27701caf89e83p0
+cos,0x1.9e7f8652b4758p-2,-0x1.27701caf89e83p0
+cos,0x1.61a76077aee08p-2,0x1.37d9e563f51fcp0
+cos,0x1.61a76077aee08p-2,-0x1.37d9e563f51fcp0
+cos,0x1.235b331d8f749p-2,0x1.4843ae1860575p0
+cos,0x1.235b331d8f749p-2,-0x1.4843ae1860575p0
+cos,0x1.c7b90e3024594p-3,0x1.58ad76cccb8eep0
+cos,0x1.c7b90e3024594p-3,-0x1.58ad76cccb8eep0
+cos,0x1.46dc4f4ce83dap-3,0x1.69173f8136c67p0
+cos,0x1.46dc4f4ce83dap-3,-0x1.69173f8136c67p0
+cos,0x1.894f70befbb9ap-4,0x1.79810835a1fep0
+cos,0x1.894f70befbb9ap-4,-0x1.79810835a1fep0
+cos,0x1.069107ae9333p-5,0x1.89ead0ea0d359p0
+cos,0x1.069107ae9333p-5,-0x1.89ead0ea0d359p0
+cos,-0x1.069107ae9327ep-5,0x1.9a54999e786d2p0
+cos,-0x1.069107ae9327ep-5,-0x1.9a54999e786d2p0
+cos,-0x1.894f70befbb41p-4,0x1.aabe6252e3a4bp0
+cos,-0x1.894f70befbb41p-4,-0x1.aabe6252e3a4bp0
+cos,-0x1.46dc4f4ce83afp-3,0x1.bb282b074edc4p0
+cos,-0x1.46dc4f4ce83afp-3,-0x1.bb282b074edc4p0
+cos,-0x1.c7b90e3024569p-3,0x1.cb91f3bbba13dp0
+cos,-0x1.c7b90e3024569p-3,-0x1.cb91f3bbba13dp0
+cos,-0x1.235b331d8f734p-2,0x1.dbfbbc70254b6p0
+cos,-0x1.235b331d8f734p-2,-0x1.dbfbbc70254b6p0
+cos,-0x1.61a76077aedf3p-2,0x1.ec6585249082fp0
+cos,-0x1.61a76077aedf3p-2,-0x1.ec6585249082fp0
+cos,-0x1.9e7f8652b4744p-2,0x1.fccf4dd8fbba8p0
+cos,-0x1.9e7f8652b4744p-2,-0x1.fccf4dd8fbba8p0
+cos,-0x1.d9a3a336edb66p-2,0x1.069c8b46b3791p1
+cos,-0x1.d9a3a336edb66p-2,-0x1.069c8b46b3791p1
+cos,-0x1.096ac02ec42c2p-1,0x1.0ed16fa0e914ep1
+cos,-0x1.096ac02ec42c2p-1,-0x1.0ed16fa0e914ep1
+cos,-0x1.24ec79917163ep-1,0x1.170653fb1eb0bp1
+cos,-0x1.24ec79917163ep-1,-0x1.170653fb1eb0bp1
+cos,-0x1.3f3a0e28bedd1p-1,0x1.1f3b3855544c8p1
+cos,-0x1.3f3a0e28bedd1p-1,-0x1.1f3b3855544c8p1
+cos,-0x1.5837d2817cf2fp-1,0x1.27701caf89e85p1
+cos,-0x1.5837d2817cf2fp-1,-0x1.27701caf89e85p1
+cos,-0x1.6fcb7c6b8b91ap-1,0x1.2fa50109bf842p1
+cos,-0x1.6fcb7c6b8b91ap-1,-0x1.2fa50109bf842p1
+cos,-0x1.85dc3ea1bbcebp-1,0x1.37d9e563f51ffp1
+cos,-0x1.85dc3ea1bbcebp-1,-0x1.37d9e563f51ffp1
+cos,-0x1.9a52e2e0fbcb6p-1,0x1.400ec9be2abbcp1
+cos,-0x1.9a52e2e0fbcb6p-1,-0x1.400ec9be2abbcp1
+cos,-0x1.ad19e2535aa9ap-1,0x1.4843ae1860579p1
+cos,-0x1.ad19e2535aa9ap-1,-0x1.4843ae1860579p1
+cos,-0x1.be1d7c3534c44p-1,0x1.5078927295f36p1
+cos,-0x1.be1d7c3534c44p-1,-0x1.5078927295f36p1
+cos,-0x1.cd4bca9cb5c76p-1,0x1.58ad76cccb8f3p1
+cos,-0x1.cd4bca9cb5c76p-1,-0x1.58ad76cccb8f3p1
+cos,-0x1.da94d54dd4c0dp-1,0x1.60e25b27012bp1
+cos,-0x1.da94d54dd4c0dp-1,-0x1.60e25b27012bp1
+cos,-0x1.e5eaa286fbbcbp-1,0x1.69173f8136c6dp1
+cos,-0x1.e5eaa286fbbcbp-1,-0x1.69173f8136c6dp1
+cos,-0x1.ef4145b4aed04p-1,0x1.714c23db6c62ap1
+cos,-0x1.ef4145b4aed04p-1,-0x1.714c23db6c62ap1
+cos,-0x1.f68eebfcbb5ecp-1,0x1.79810835a1fe7p1
+cos,-0x1.f68eebfcbb5ecp-1,-0x1.79810835a1fe7p1
+cos,-0x1.fbcbe693bd8efp-1,0x1.81b5ec8fd79a4p1
+cos,-0x1.fbcbe693bd8efp-1,-0x1.81b5ec8fd79a4p1
+cos,-0x1.fef2b2d21cf6cp-1,0x1.89ead0ea0d35bp1
+cos,-0x1.fef2b2d21cf6cp-1,-0x1.89ead0ea0d35bp1
+cos,0x1.ef4145b4aecffp-1,-0x1.81b5ec8fd799fp2
+cos,0x1.ef4145b4aecffp-1,0x1.81b5ec8fd799fp2
+cos,0x1.be1d7c3534c4p-1,-0x1.714c23db6c626p2
+cos,0x1.be1d7c3534c4p-1,0x1.714c23db6c626p2
+cos,0x1.6fcb7c6b8b919p-1,-0x1.60e25b27012adp2
+cos,0x1.6fcb7c6b8b919p-1,0x1.60e25b27012adp2
+cos,0x1.096ac02ec42c8p-1,-0x1.5078927295f34p2
+cos,0x1.096ac02ec42c8p-1,0x1.5078927295f34p2
+cos,0x1.235b331d8f748p-2,-0x1.400ec9be2abbbp2
+cos,0x1.235b331d8f748p-2,0x1.400ec9be2abbbp2
+cos,0x1.069107ae9332cp-5,-0x1.2fa50109bf842p2
+cos,0x1.069107ae9332cp-5,0x1.2fa50109bf842p2
+cos,-0x1.c7b90e3024569p-3,-0x1.1f3b3855544c9p2
+cos,-0x1.c7b90e3024569p-3,0x1.1f3b3855544c9p2
+cos,-0x1.d9a3a336edb63p-2,-0x1.0ed16fa0e915p2
+cos,-0x1.d9a3a336edb63p-2,0x1.0ed16fa0e915p2
+cos,-0x1.5837d2817cf28p-1,-0x1.fccf4dd8fbbaep1
+cos,-0x1.5837d2817cf28p-1,0x1.fccf4dd8fbbaep1
+cos,-0x1.ad19e2535aa9p-1,-0x1.dbfbbc70254bcp1
+cos,-0x1.ad19e2535aa9p-1,0x1.dbfbbc70254bcp1
+cos,-0x1.e5eaa286fbbc3p-1,-0x1.bb282b074edcap1
+cos,-0x1.e5eaa286fbbc3p-1,0x1.bb282b074edcap1
+cos,-0x1.fef2b2d21cf6bp-1,-0x1.9a54999e786d8p1
+cos,-0x1.fef2b2d21cf6bp-1,0x1.9a54999e786d8p1
+cos,-0x1.f68eebfcbb5ebp-1,-0x1.79810835a1fe6p1
+cos,-0x1.f68eebfcbb5ebp-1,0x1.79810835a1fe6p1
+cos,-0x1.cd4bca9cb5c77p-1,-0x1.58ad76cccb8f4p1
+cos,-0x1.cd4bca9cb5c77p-1,0x1.58ad76cccb8f4p1
+cos,-0x1.85dc3ea1bbcf3p-1,-0x1.37d9e563f5202p1
+cos,-0x1.85dc3ea1bbcf3p-1,0x1.37d9e563f5202p1
+cos,-0x1.24ec79917164ep-1,-0x1.170653fb1eb1p1
+cos,-0x1.24ec79917164ep-1,0x1.170653fb1eb1p1
+cos,-0x1.61a76077aee24p-2,-0x1.ec6585249083cp0
+cos,-0x1.61a76077aee24p-2,0x1.ec6585249083cp0
+cos,-0x1.894f70befbc1p-4,-0x1.aabe6252e3a58p0
+cos,-0x1.894f70befbc1p-4,0x1.aabe6252e3a58p0
+cos,0x1.46dc4f4ce8374p-3,-0x1.69173f8136c74p0
+cos,0x1.46dc4f4ce8374p-3,0x1.69173f8136c74p0
+cos,0x1.9e7f8652b4729p-2,-0x1.27701caf89e9p0
+cos,0x1.9e7f8652b4729p-2,0x1.27701caf89e9p0
+cos,0x1.3f3a0e28bedcp-1,-0x1.cb91f3bbba157p-1
+cos,0x1.3f3a0e28bedcp-1,0x1.cb91f3bbba157p-1
+cos,0x1.9a52e2e0fbca5p-1,-0x1.4843ae186058ep-1
+cos,0x1.9a52e2e0fbca5p-1,0x1.4843ae186058ep-1
+cos,0x1.da94d54dd4bffp-1,-0x1.89ead0ea0d38ap-2
+cos,0x1.da94d54dd4bffp-1,0x1.89ead0ea0d38ap-2
+cos,0x1.fbcbe693bd8eap-1,-0x1.069c8b46b37fp-3
+cos,0x1.fbcbe693bd8eap-1,0x1.069c8b46b37fp-3
+cos,0x1.fbcbe693bd8fp-1,0x1.069c8b46b3734p-3
+cos,0x1.fbcbe693bd8fp-1,-0x1.069c8b46b3734p-3
+cos,0x1.da94d54dd4c11p-1,0x1.89ead0ea0d32cp-2
+cos,0x1.da94d54dd4c11p-1,-0x1.89ead0ea0d32cp-2
+cos,0x1.9a52e2e0fbcc1p-1,0x1.4843ae186055fp-1
+cos,0x1.9a52e2e0fbcc1p-1,-0x1.4843ae186055fp-1
+cos,0x1.3f3a0e28bede4p-1,0x1.cb91f3bbba128p-1
+cos,0x1.3f3a0e28bede4p-1,-0x1.cb91f3bbba128p-1
+cos,0x1.9e7f8652b478p-2,0x1.27701caf89e78p0
+cos,0x1.9e7f8652b478p-2,-0x1.27701caf89e78p0
+cos,0x1.46dc4f4ce8431p-3,0x1.69173f8136c5cp0
+cos,0x1.46dc4f4ce8431p-3,-0x1.69173f8136c5cp0
+cos,-0x1.894f70befba92p-4,0x1.aabe6252e3a4p0
+cos,-0x1.894f70befba92p-4,-0x1.aabe6252e3a4p0
+cos,-0x1.61a76077aedcap-2,0x1.ec65852490824p0
+cos,-0x1.61a76077aedcap-2,-0x1.ec65852490824p0
+cos,-0x1.24ec799171627p-1,0x1.170653fb1eb04p1
+cos,-0x1.24ec799171627p-1,-0x1.170653fb1eb04p1
+cos,-0x1.85dc3ea1bbcd3p-1,0x1.37d9e563f51f6p1
+cos,-0x1.85dc3ea1bbcd3p-1,-0x1.37d9e563f51f6p1
+cos,-0x1.cd4bca9cb5c63p-1,0x1.58ad76cccb8e8p1
+cos,-0x1.cd4bca9cb5c63p-1,-0x1.58ad76cccb8e8p1
+cos,-0x1.f68eebfcbb5e2p-1,0x1.79810835a1fdap1
+cos,-0x1.f68eebfcbb5e2p-1,-0x1.79810835a1fdap1
+cos,-0x1.fef2b2d21cf6ep-1,0x1.9a54999e786ccp1
+cos,-0x1.fef2b2d21cf6ep-1,-0x1.9a54999e786ccp1
+cos,-0x1.e5eaa286fbbd2p-1,0x1.bb282b074edbep1
+cos,-0x1.e5eaa286fbbd2p-1,-0x1.bb282b074edbep1
+cos,-0x1.ad19e2535aaaap-1,0x1.dbfbbc70254bp1
+cos,-0x1.ad19e2535aaaap-1,-0x1.dbfbbc70254bp1
+cos,-0x1.5837d2817cf4bp-1,0x1.fccf4dd8fbba2p1
+cos,-0x1.5837d2817cf4bp-1,-0x1.fccf4dd8fbba2p1
+cos,-0x1.d9a3a336edbb8p-2,0x1.0ed16fa0e914ap2
+cos,-0x1.d9a3a336edbb8p-2,-0x1.0ed16fa0e914ap2
+cos,-0x1.c7b90e3024625p-3,0x1.1f3b3855544c3p2
+cos,-0x1.c7b90e3024625p-3,-0x1.1f3b3855544c3p2
+cos,0x1.069107ae9302dp-5,0x1.2fa50109bf83cp2
+cos,0x1.069107ae9302dp-5,-0x1.2fa50109bf83cp2
+cos,0x1.235b331d8f6ecp-2,0x1.400ec9be2abb5p2
+cos,0x1.235b331d8f6ecp-2,-0x1.400ec9be2abb5p2
+cos,0x1.096ac02ec429fp-1,0x1.5078927295f2ep2
+cos,0x1.096ac02ec429fp-1,-0x1.5078927295f2ep2
+cos,0x1.6fcb7c6b8b8f7p-1,0x1.60e25b27012a7p2
+cos,0x1.6fcb7c6b8b8f7p-1,-0x1.60e25b27012a7p2
+cos,0x1.be1d7c3534c28p-1,0x1.714c23db6c62p2
+cos,0x1.be1d7c3534c28p-1,-0x1.714c23db6c62p2
+cos,0x1.ef4145b4aecf3p-1,0x1.81b5ec8fd7999p2
+cos,0x1.ef4145b4aecf3p-1,-0x1.81b5ec8fd7999p2
+cos,0x1.ff0fd2c96adfcp-1,0x1.effffffffffffp-5
+cos,0x1.ff0fd2c96adfcp-1,-0x1.effffffffffffp-5
+cos,0x1.ff0fd2c96adfcp-1,0x1.fp-5
+cos,0x1.ff0fd2c96adfcp-1,-0x1.fp-5
+cos,0x1.ff0fd2c96adfcp-1,0x1.f000000000001p-5
+cos,0x1.ff0fd2c96adfcp-1,-0x1.f000000000001p-5
+cos,0x1.fc210055467fep-1,0x1.f7fffffffffffp-4
+cos,0x1.fc210055467fep-1,-0x1.f7fffffffffffp-4
+cos,0x1.fc210055467fep-1,0x1.f8p-4
+cos,0x1.fc210055467fep-1,-0x1.f8p-4
+cos,0x1.fc210055467fep-1,0x1.f800000000001p-4
+cos,0x1.fc210055467fep-1,-0x1.f800000000001p-4
+cos,0x1.f94984b2552e2p-1,0x1.4bfffffffffffp-3
+cos,0x1.f94984b2552e2p-1,-0x1.4bfffffffffffp-3
+cos,0x1.f94984b2552e2p-1,0x1.4cp-3
+cos,0x1.f94984b2552e2p-1,-0x1.4cp-3
+cos,0x1.f94984b2552e2p-1,0x1.4c00000000001p-3
+cos,0x1.f94984b2552e2p-1,-0x1.4c00000000001p-3
+cos,0x1.e921dd42f09bbp-1,0x1.3333333333332p-2
+cos,0x1.e921dd42f09bbp-1,-0x1.3333333333332p-2
+cos,0x1.e921dd42f09bap-1,0x1.3333333333333p-2
+cos,0x1.e921dd42f09bap-1,-0x1.3333333333333p-2
+cos,0x1.e921dd42f09bap-1,0x1.3333333333334p-2
+cos,0x1.e921dd42f09bap-1,-0x1.3333333333334p-2
+cos,0x1.8feedb86bf0efp-1,0x1.594317acc4ef8p-1
+cos,0x1.8feedb86bf0efp-1,-0x1.594317acc4ef8p-1
+cos,0x1.8feedb86bf0efp-1,0x1.594317acc4ef9p-1
+cos,0x1.8feedb86bf0efp-1,-0x1.594317acc4ef9p-1
+cos,0x1.8feedb86bf0eep-1,0x1.594317acc4efap-1
+cos,0x1.8feedb86bf0eep-1,-0x1.594317acc4efap-1
+cos,0x1.6b898fa9efb5ep-1,0x1.8ffffffffffffp-1
+cos,0x1.6b898fa9efb5ep-1,-0x1.8ffffffffffffp-1
+cos,0x1.6b898fa9efb5dp-1,0x1.9p-1
+cos,0x1.6b898fa9efb5dp-1,-0x1.9p-1
+cos,0x1.6b898fa9efb5cp-1,0x1.9000000000001p-1
+cos,0x1.6b898fa9efb5cp-1,-0x1.9000000000001p-1
+cos,0x1.0p0,-0x0.0000000000001p-1022
+cos,0x1.0p0,0x0.0000000000001p-1022
+cos,0x1.0p0,-0x0.0p0
+cos,0x1.0p0,0x0.0000000000001p-1022
+cos,0x1.0p0,-0x0.0000000000001p-1022
+cos,0x1.ff621e3796d7ep-1,0x1.921fb54442d17p-5
+cos,0x1.ff621e3796d7ep-1,-0x1.921fb54442d17p-5
+cos,0x1.ff621e3796d7ep-1,0x1.921fb54442d18p-5
+cos,0x1.ff621e3796d7ep-1,-0x1.921fb54442d18p-5
+cos,0x1.ff621e3796d7ep-1,0x1.921fb54442d19p-5
+cos,0x1.ff621e3796d7ep-1,-0x1.921fb54442d19p-5
+cos,0x1.fd88da3d12526p-1,0x1.921fb54442d17p-4
+cos,0x1.fd88da3d12526p-1,-0x1.921fb54442d17p-4
+cos,0x1.fd88da3d12526p-1,0x1.921fb54442d18p-4
+cos,0x1.fd88da3d12526p-1,-0x1.921fb54442d18p-4
+cos,0x1.fd88da3d12526p-1,0x1.921fb54442d19p-4
+cos,0x1.fd88da3d12526p-1,-0x1.921fb54442d19p-4
+cos,0x1.f6297cff75cbp-1,0x1.921fb54442d17p-3
+cos,0x1.f6297cff75cbp-1,-0x1.921fb54442d17p-3
+cos,0x1.f6297cff75cbp-1,0x1.921fb54442d18p-3
+cos,0x1.f6297cff75cbp-1,-0x1.921fb54442d18p-3
+cos,0x1.f6297cff75cbp-1,0x1.921fb54442d19p-3
+cos,0x1.f6297cff75cbp-1,-0x1.921fb54442d19p-3
+cos,0x1.d906bcf328d46p-1,0x1.921fb54442d17p-2
+cos,0x1.d906bcf328d46p-1,-0x1.921fb54442d17p-2
+cos,0x1.d906bcf328d46p-1,0x1.921fb54442d18p-2
+cos,0x1.d906bcf328d46p-1,-0x1.921fb54442d18p-2
+cos,0x1.d906bcf328d46p-1,0x1.921fb54442d19p-2
+cos,0x1.d906bcf328d46p-1,-0x1.921fb54442d19p-2
+cos,0x1.6a09e667f3bcep-1,0x1.921fb54442d17p-1
+cos,0x1.6a09e667f3bcep-1,-0x1.921fb54442d17p-1
+cos,0x1.6a09e667f3bcdp-1,0x1.921fb54442d18p-1
+cos,0x1.6a09e667f3bcdp-1,-0x1.921fb54442d18p-1
+cos,0x1.6a09e667f3bccp-1,0x1.921fb54442d19p-1
+cos,0x1.6a09e667f3bccp-1,-0x1.921fb54442d19p-1
+cos,0x1.469898cc51702p-52,0x1.921fb54442d17p0
+cos,0x1.469898cc51702p-52,-0x1.921fb54442d17p0
+cos,0x1.1a62633145c07p-54,0x1.921fb54442d18p0
+cos,0x1.1a62633145c07p-54,-0x1.921fb54442d18p0
+cos,-0x1.72cece675d1fdp-53,0x1.921fb54442d19p0
+cos,-0x1.72cece675d1fdp-53,-0x1.921fb54442d19p0
+cos,-0x1.0p0,0x1.921fb54442d17p1
+cos,-0x1.0p0,-0x1.921fb54442d17p1
+cos,-0x1.0p0,0x1.921fb54442d18p1
+cos,-0x1.0p0,-0x1.921fb54442d18p1
+cos,-0x1.0p0,0x1.921fb54442d19p1
+cos,-0x1.0p0,-0x1.921fb54442d19p1
+cos,0x1.0p0,0x1.921fb54442d17p2
+cos,0x1.0p0,-0x1.921fb54442d17p2
+cos,0x1.0p0,0x1.921fb54442d18p2
+cos,0x1.0p0,-0x1.921fb54442d18p2
+cos,0x1.0p0,0x1.921fb54442d19p2
+cos,0x1.0p0,-0x1.921fb54442d19p2
+cos,0x1.0p0,0x1.921fb54442d17p3
+cos,0x1.0p0,-0x1.921fb54442d17p3
+cos,0x1.0p0,0x1.921fb54442d18p3
+cos,0x1.0p0,-0x1.921fb54442d18p3
+cos,0x1.0p0,0x1.921fb54442d19p3
+cos,0x1.0p0,-0x1.921fb54442d19p3
+cos,0x1.0p0,0x1.921fb54442d17p4
+cos,0x1.0p0,-0x1.921fb54442d17p4
+cos,0x1.0p0,0x1.921fb54442d18p4
+cos,0x1.0p0,-0x1.921fb54442d18p4
+cos,0x1.0p0,0x1.921fb54442d19p4
+cos,0x1.0p0,-0x1.921fb54442d19p4
+cos,0x1.0p0,0x1.921fb54442d17p5
+cos,0x1.0p0,-0x1.921fb54442d17p5
+cos,0x1.0p0,0x1.921fb54442d18p5
+cos,0x1.0p0,-0x1.921fb54442d18p5
+cos,0x1.0p0,0x1.921fb54442d19p5
+cos,0x1.0p0,-0x1.921fb54442d19p5
+cos,0x1.0p0,0x1.921fb54442d17p6
+cos,0x1.0p0,-0x1.921fb54442d17p6
+cos,0x1.0p0,0x1.921fb54442d18p6
+cos,0x1.0p0,-0x1.921fb54442d18p6
+cos,0x1.0p0,0x1.921fb54442d19p6
+cos,0x1.0p0,-0x1.921fb54442d19p6
+cos,0x1.0p0,0x1.921fb54442d17p7
+cos,0x1.0p0,-0x1.921fb54442d17p7
+cos,0x1.0p0,0x1.921fb54442d18p7
+cos,0x1.0p0,-0x1.921fb54442d18p7
+cos,0x1.0p0,0x1.921fb54442d19p7
+cos,0x1.0p0,-0x1.921fb54442d19p7
+cos,-0x1.6a09e667f3bc9p-1,0x1.2d97c7f3321d1p1
+cos,-0x1.6a09e667f3bc9p-1,-0x1.2d97c7f3321d1p1
+cos,-0x1.6a09e667f3bccp-1,0x1.2d97c7f3321d2p1
+cos,-0x1.6a09e667f3bccp-1,-0x1.2d97c7f3321d2p1
+cos,-0x1.6a09e667f3bcfp-1,0x1.2d97c7f3321d3p1
+cos,-0x1.6a09e667f3bcfp-1,-0x1.2d97c7f3321d3p1
+cos,-0x1.6a09e667f3bdp-1,0x1.f6a7a2955385dp1
+cos,-0x1.6a09e667f3bdp-1,-0x1.f6a7a2955385dp1
+cos,-0x1.6a09e667f3bcep-1,0x1.f6a7a2955385ep1
+cos,-0x1.6a09e667f3bcep-1,-0x1.f6a7a2955385ep1
+cos,-0x1.6a09e667f3bcbp-1,0x1.f6a7a2955385fp1
+cos,-0x1.6a09e667f3bcbp-1,-0x1.f6a7a2955385fp1
+cos,-0x1.34f272993d141p-50,0x1.2d97c7f3321d1p2
+cos,-0x1.34f272993d141p-50,-0x1.2d97c7f3321d1p2
+cos,-0x1.a79394c9e8a0ap-53,0x1.2d97c7f3321d2p2
+cos,-0x1.a79394c9e8a0ap-53,-0x1.2d97c7f3321d2p2
+cos,0x1.961b1acd85d7dp-51,0x1.2d97c7f3321d3p2
+cos,0x1.961b1acd85d7dp-51,-0x1.2d97c7f3321d3p2
+cos,0x1.6a09e667f3bc6p-1,0x1.5fdbbe9bba774p2
+cos,0x1.6a09e667f3bc6p-1,-0x1.5fdbbe9bba774p2
+cos,0x1.6a09e667f3bcbp-1,0x1.5fdbbe9bba775p2
+cos,0x1.6a09e667f3bcbp-1,-0x1.5fdbbe9bba775p2
+cos,0x1.6a09e667f3bd1p-1,0x1.5fdbbe9bba776p2
+cos,0x1.6a09e667f3bd1p-1,-0x1.5fdbbe9bba776p2
+cos,0x1.6a09e667f3bd4p-1,0x1.c463abeccb2bap2
+cos,0x1.6a09e667f3bd4p-1,-0x1.c463abeccb2bap2
+cos,0x1.6a09e667f3bcep-1,0x1.c463abeccb2bbp2
+cos,0x1.6a09e667f3bcep-1,-0x1.c463abeccb2bbp2
+cos,0x1.6a09e667f3bc9p-1,0x1.c463abeccb2bcp2
+cos,0x1.6a09e667f3bc9p-1,-0x1.c463abeccb2bcp2
+cos,0x1.583ebeff65cc2p-50,0x1.f6a7a2955385dp2
+cos,0x1.583ebeff65cc2p-50,-0x1.f6a7a2955385dp2
+cos,0x1.60fafbfd97309p-52,0x1.f6a7a2955385ep2
+cos,0x1.60fafbfd97309p-52,-0x1.f6a7a2955385ep2
+cos,-0x1.4f8282013467cp-51,0x1.f6a7a2955385fp2
+cos,-0x1.4f8282013467cp-51,-0x1.f6a7a2955385fp2
+cos,-0x1.6a09e667f3bb9p-1,0x1.1475cc9eedeffp3
+cos,-0x1.6a09e667f3bb9p-1,-0x1.1475cc9eedeffp3
+cos,-0x1.6a09e667f3bc5p-1,0x1.1475cc9eedfp3
+cos,-0x1.6a09e667f3bc5p-1,-0x1.1475cc9eedfp3
+cos,-0x1.6a09e667f3bdp-1,0x1.1475cc9eedf01p3
+cos,-0x1.6a09e667f3bdp-1,-0x1.1475cc9eedf01p3
+cos,-0x1.0p0,0x1.2d97c7f3321d1p3
+cos,-0x1.0p0,-0x1.2d97c7f3321d1p3
+cos,-0x1.0p0,0x1.2d97c7f3321d2p3
+cos,-0x1.0p0,-0x1.2d97c7f3321d2p3
+cos,-0x1.0p0,0x1.2d97c7f3321d3p3
+cos,-0x1.0p0,-0x1.2d97c7f3321d3p3
+cos,-0x1.6a09e667f3bep-1,0x1.46b9c347764a2p3
+cos,-0x1.6a09e667f3bep-1,-0x1.46b9c347764a2p3
+cos,-0x1.6a09e667f3bd5p-1,0x1.46b9c347764a3p3
+cos,-0x1.6a09e667f3bd5p-1,-0x1.46b9c347764a3p3
+cos,-0x1.6a09e667f3bc9p-1,0x1.46b9c347764a4p3
+cos,-0x1.6a09e667f3bc9p-1,-0x1.46b9c347764a4p3
+cos,-0x1.3dc585b2c7422p-49,0x1.5fdbbe9bba774p3
+cos,-0x1.3dc585b2c7422p-49,-0x1.5fdbbe9bba774p3
+cos,-0x1.ee2c2d963a10cp-52,0x1.5fdbbe9bba775p3
+cos,-0x1.ee2c2d963a10cp-52,-0x1.5fdbbe9bba775p3
+cos,0x1.8474f49a717bdp-50,0x1.5fdbbe9bba776p3
+cos,0x1.8474f49a717bdp-50,-0x1.5fdbbe9bba776p3
+cos,0x1.6a09e667f3bb9p-1,0x1.78fdb9effea45p3
+cos,0x1.6a09e667f3bb9p-1,-0x1.78fdb9effea45p3
+cos,0x1.6a09e667f3bc4p-1,0x1.78fdb9effea46p3
+cos,0x1.6a09e667f3bc4p-1,-0x1.78fdb9effea46p3
+cos,0x1.6a09e667f3bcfp-1,0x1.78fdb9effea47p3
+cos,0x1.6a09e667f3bcfp-1,-0x1.78fdb9effea47p3
+cos,0x1.6a09e667f3be1p-1,0x1.ab41b09886fe8p3
+cos,0x1.6a09e667f3be1p-1,-0x1.ab41b09886fe8p3
+cos,0x1.6a09e667f3bd6p-1,0x1.ab41b09886fe9p3
+cos,0x1.6a09e667f3bd6p-1,-0x1.ab41b09886fe9p3
+cos,0x1.6a09e667f3bcap-1,0x1.ab41b09886feap3
+cos,0x1.6a09e667f3bcap-1,-0x1.ab41b09886feap3
+cos,0x1.4f6babe5db9e2p-49,0x1.c463abeccb2bap3
+cos,0x1.4f6babe5db9e2p-49,-0x1.c463abeccb2bap3
+cos,0x1.3daeaf976e788p-51,0x1.c463abeccb2bbp3
+cos,0x1.3daeaf976e788p-51,-0x1.c463abeccb2bbp3
+cos,-0x1.6128a83448c3cp-50,0x1.c463abeccb2bcp3
+cos,-0x1.6128a83448c3cp-50,-0x1.c463abeccb2bcp3
+cos,-0x1.6a09e667f3bb8p-1,0x1.dd85a7410f58bp3
+cos,-0x1.6a09e667f3bb8p-1,-0x1.dd85a7410f58bp3
+cos,-0x1.6a09e667f3bc3p-1,0x1.dd85a7410f58cp3
+cos,-0x1.6a09e667f3bc3p-1,-0x1.dd85a7410f58cp3
+cos,-0x1.6a09e667f3bcep-1,0x1.dd85a7410f58dp3
+cos,-0x1.6a09e667f3bcep-1,-0x1.dd85a7410f58dp3
+cos,-0x1.0p0,0x1.f6a7a2955385dp3
+cos,-0x1.0p0,-0x1.f6a7a2955385dp3
+cos,-0x1.0p0,0x1.f6a7a2955385ep3
+cos,-0x1.0p0,-0x1.f6a7a2955385ep3
+cos,-0x1.0p0,0x1.f6a7a2955385fp3
+cos,-0x1.0p0,-0x1.f6a7a2955385fp3
+cos,-0x1.6a09e667f3bf8p-1,0x1.07e4cef4cbd96p4
+cos,-0x1.6a09e667f3bf8p-1,-0x1.07e4cef4cbd96p4
+cos,-0x1.6a09e667f3be2p-1,0x1.07e4cef4cbd97p4
+cos,-0x1.6a09e667f3be2p-1,-0x1.07e4cef4cbd97p4
+cos,-0x1.6a09e667f3bcbp-1,0x1.07e4cef4cbd98p4
+cos,-0x1.6a09e667f3bcbp-1,-0x1.07e4cef4cbd98p4
+cos,-0x1.b088e90c77fd1p-48,0x1.1475cc9eedeffp4
+cos,-0x1.b088e90c77fd1p-48,-0x1.1475cc9eedeffp4
+cos,-0x1.6111d218effa2p-49,0x1.1475cc9eedfp4
+cos,-0x1.6111d218effa2p-49,-0x1.1475cc9eedfp4
+cos,0x1.3ddc5bce200bbp-50,0x1.1475cc9eedf01p4
+cos,0x1.3ddc5bce200bbp-50,-0x1.1475cc9eedf01p4
+cos,0x1.6a09e667f3bacp-1,0x1.2106ca4910068p4
+cos,0x1.6a09e667f3bacp-1,-0x1.2106ca4910068p4
+cos,0x1.6a09e667f3bc3p-1,0x1.2106ca4910069p4
+cos,0x1.6a09e667f3bc3p-1,-0x1.2106ca4910069p4
+cos,0x1.6a09e667f3bd9p-1,0x1.2106ca491006ap4
+cos,0x1.6a09e667f3bd9p-1,-0x1.2106ca491006ap4
+cos,0x1.0p0,0x1.2d97c7f3321d1p4
+cos,0x1.0p0,-0x1.2d97c7f3321d1p4
+cos,0x1.0p0,0x1.2d97c7f3321d2p4
+cos,0x1.0p0,-0x1.2d97c7f3321d2p4
+cos,0x1.0p0,0x1.2d97c7f3321d3p4
+cos,0x1.0p0,-0x1.2d97c7f3321d3p4
+cos,0x1.6a09e667f3bf9p-1,0x1.3a28c59d54339p4
+cos,0x1.6a09e667f3bf9p-1,-0x1.3a28c59d54339p4
+cos,0x1.6a09e667f3be2p-1,0x1.3a28c59d5433ap4
+cos,0x1.6a09e667f3be2p-1,-0x1.3a28c59d5433ap4
+cos,0x1.6a09e667f3bccp-1,0x1.3a28c59d5433bp4
+cos,0x1.6a09e667f3bccp-1,-0x1.3a28c59d5433bp4
+cos,0x1.b95bfc26022b1p-48,0x1.46b9c347764a2p4
+cos,0x1.b95bfc26022b1p-48,-0x1.46b9c347764a2p4
+cos,0x1.72b7f84c04563p-49,0x1.46b9c347764a3p4
+cos,0x1.72b7f84c04563p-49,-0x1.46b9c347764a3p4
+cos,-0x1.1a900f67f753ap-50,0x1.46b9c347764a4p4
+cos,-0x1.1a900f67f753ap-50,-0x1.46b9c347764a4p4
+cos,-0x1.6a09e667f3babp-1,0x1.534ac0f19860bp4
+cos,-0x1.6a09e667f3babp-1,-0x1.534ac0f19860bp4
+cos,-0x1.6a09e667f3bc2p-1,0x1.534ac0f19860cp4
+cos,-0x1.6a09e667f3bc2p-1,-0x1.534ac0f19860cp4
+cos,-0x1.6a09e667f3bd8p-1,0x1.534ac0f19860dp4
+cos,-0x1.6a09e667f3bd8p-1,-0x1.534ac0f19860dp4
+cos,-0x1.0p0,0x1.5fdbbe9bba774p4
+cos,-0x1.0p0,-0x1.5fdbbe9bba774p4
+cos,-0x1.0p0,0x1.5fdbbe9bba775p4
+cos,-0x1.0p0,-0x1.5fdbbe9bba775p4
+cos,-0x1.0p0,0x1.5fdbbe9bba776p4
+cos,-0x1.0p0,-0x1.5fdbbe9bba776p4
+cos,-0x1.6a09e667f3bfap-1,0x1.6c6cbc45dc8dcp4
+cos,-0x1.6a09e667f3bfap-1,-0x1.6c6cbc45dc8dcp4
+cos,-0x1.6a09e667f3be3p-1,0x1.6c6cbc45dc8ddp4
+cos,-0x1.6a09e667f3be3p-1,-0x1.6c6cbc45dc8ddp4
+cos,-0x1.6a09e667f3bcdp-1,0x1.6c6cbc45dc8dep4
+cos,-0x1.6a09e667f3bcdp-1,-0x1.6c6cbc45dc8dep4
+cos,-0x1.c22f0f3f8c592p-48,0x1.78fdb9effea45p4
+cos,-0x1.c22f0f3f8c592p-48,-0x1.78fdb9effea45p4
+cos,-0x1.845e1e7f18b23p-49,0x1.78fdb9effea46p4
+cos,-0x1.845e1e7f18b23p-49,-0x1.78fdb9effea46p4
+cos,0x1.ee8786039d373p-51,0x1.78fdb9effea47p4
+cos,0x1.ee8786039d373p-51,-0x1.78fdb9effea47p4
+cos,0x1.6a09e667f3baap-1,0x1.858eb79a20baep4
+cos,0x1.6a09e667f3baap-1,-0x1.858eb79a20baep4
+cos,0x1.6a09e667f3bc1p-1,0x1.858eb79a20bafp4
+cos,0x1.6a09e667f3bc1p-1,-0x1.858eb79a20bafp4
+cos,0x1.6a09e667f3bd8p-1,0x1.858eb79a20bbp4
+cos,0x1.6a09e667f3bd8p-1,-0x1.858eb79a20bbp4
+cos,-0x1.2ccaf641d4262p-3,0x1.fffffffffffffp62
+cos,-0x1.2ccaf641d4262p-3,-0x1.fffffffffffffp62
+cos,0x1.82aa375b3c33ep-7,0x1.0p63
+cos,0x1.82aa375b3c33ep-7,-0x1.0p63
+cos,0x1.4c0622a6e35dep-2,0x1.0000000000001p63
+cos,0x1.4c0622a6e35dep-2,-0x1.0000000000001p63
+cos,0x1.4ab650b8c6073p-1,0x1.fffffffffffffp26
+cos,0x1.4ab650b8c6073p-1,-0x1.fffffffffffffp26
+cos,0x1.4ab6511a7d39bp-1,0x1.0p27
+cos,0x1.4ab6511a7d39bp-1,-0x1.0p27
+cos,0x1.4ab651ddeb9e6p-1,0x1.0000000000001p27
+cos,0x1.4ab651ddeb9e6p-1,-0x1.0000000000001p27
+cos,0x1.40ad67e777b1ep-1,0x1.fffffffffffffp23
+cos,0x1.40ad67e777b1ep-1,-0x1.fffffffffffffp23
+cos,0x1.40ad67f3f0c9ap-1,0x1.0p24
+cos,0x1.40ad67f3f0c9ap-1,-0x1.0p24
+cos,0x1.40ad680ce2f92p-1,0x1.0000000000001p24
+cos,0x1.40ad680ce2f92p-1,-0x1.0000000000001p24
+cos,-0x1.4eaa606db24c4p-1,0x1.fffffffffffffp1
+cos,-0x1.4eaa606db24c4p-1,-0x1.fffffffffffffp1
+cos,-0x1.4eaa606db24c1p-1,0x1.0p2
+cos,-0x1.4eaa606db24c1p-1,-0x1.0p2
+cos,-0x1.4eaa606db24bbp-1,0x1.0000000000001p2
+cos,-0x1.4eaa606db24bbp-1,-0x1.0000000000001p2
+cos,-0x1.aa22657537201p-2,0x1.fffffffffffffp0
+cos,-0x1.aa22657537201p-2,-0x1.fffffffffffffp0
+cos,-0x1.aa22657537205p-2,0x1.0p1
+cos,-0x1.aa22657537205p-2,-0x1.0p1
+cos,-0x1.aa2265753720cp-2,0x1.0000000000001p1
+cos,-0x1.aa2265753720cp-2,-0x1.0000000000001p1
+cos,0x1.14a280fb5068cp-1,0x1.fffffffffffffp-1
+cos,0x1.14a280fb5068cp-1,-0x1.fffffffffffffp-1
+cos,0x1.14a280fb5068cp-1,0x1.0p0
+cos,0x1.14a280fb5068cp-1,-0x1.0p0
+cos,0x1.14a280fb5068ap-1,0x1.0000000000001p0
+cos,0x1.14a280fb5068ap-1,-0x1.0000000000001p0
+cos,0x1.c1528065b7d5p-1,0x1.fffffffffffffp-2
+cos,0x1.c1528065b7d5p-1,-0x1.fffffffffffffp-2
+cos,0x1.c1528065b7d5p-1,0x1.0p-1
+cos,0x1.c1528065b7d5p-1,-0x1.0p-1
+cos,0x1.c1528065b7d4fp-1,0x1.0000000000001p-1
+cos,0x1.c1528065b7d4fp-1,-0x1.0000000000001p-1
+cos,0x1.f01549f7deea2p-1,0x1.fffffffffffffp-3
+cos,0x1.f01549f7deea2p-1,-0x1.fffffffffffffp-3
+cos,0x1.f01549f7deea1p-1,0x1.0p-2
+cos,0x1.f01549f7deea1p-1,-0x1.0p-2
+cos,0x1.f01549f7deea1p-1,0x1.0000000000001p-2
+cos,0x1.f01549f7deea1p-1,-0x1.0000000000001p-2
+cos,0x1.fc015527d5bd3p-1,0x1.fffffffffffffp-4
+cos,0x1.fc015527d5bd3p-1,-0x1.fffffffffffffp-4
+cos,0x1.fc015527d5bd3p-1,0x1.0p-3
+cos,0x1.fc015527d5bd3p-1,-0x1.0p-3
+cos,0x1.fc015527d5bd3p-1,0x1.0000000000001p-3
+cos,0x1.fc015527d5bd3p-1,-0x1.0000000000001p-3
+cos,0x1.ff0015549f4d3p-1,0x1.fffffffffffffp-5
+cos,0x1.ff0015549f4d3p-1,-0x1.fffffffffffffp-5
+cos,0x1.ff0015549f4d3p-1,0x1.0p-4
+cos,0x1.ff0015549f4d3p-1,-0x1.0p-4
+cos,0x1.ff0015549f4d3p-1,0x1.0000000000001p-4
+cos,0x1.ff0015549f4d3p-1,-0x1.0000000000001p-4
+cos,0x1.ffc00155527d3p-1,0x1.fffffffffffffp-6
+cos,0x1.ffc00155527d3p-1,-0x1.fffffffffffffp-6
+cos,0x1.ffc00155527d3p-1,0x1.0p-5
+cos,0x1.ffc00155527d3p-1,-0x1.0p-5
+cos,0x1.ffc00155527d3p-1,0x1.0000000000001p-5
+cos,0x1.ffc00155527d3p-1,-0x1.0000000000001p-5
+cos,0x1.fff000155549fp-1,0x1.fffffffffffffp-7
+cos,0x1.fff000155549fp-1,-0x1.fffffffffffffp-7
+cos,0x1.fff000155549fp-1,0x1.0p-6
+cos,0x1.fff000155549fp-1,-0x1.0p-6
+cos,0x1.fff000155549fp-1,0x1.0000000000001p-6
+cos,0x1.fff000155549fp-1,-0x1.0000000000001p-6
+cos,0x1.fffffffp-1,0x1.fffffffffffffp-15
+cos,0x1.fffffffp-1,-0x1.fffffffffffffp-15
+cos,0x1.fffffffp-1,0x1.0p-14
+cos,0x1.fffffffp-1,-0x1.0p-14
+cos,0x1.fffffffp-1,0x1.0000000000001p-14
+cos,0x1.fffffffp-1,-0x1.0000000000001p-14
+cos,0x1.0p0,0x1.fffffffffffffp-28
+cos,0x1.0p0,-0x1.fffffffffffffp-28
+cos,0x1.0p0,0x1.0p-27
+cos,0x1.0p0,-0x1.0p-27
+cos,0x1.0p0,0x1.0000000000001p-27
+cos,0x1.0p0,-0x1.0000000000001p-27
+cos,0x1.0p0,0x1.fffffffffffffp-31
+cos,0x1.0p0,-0x1.fffffffffffffp-31
+cos,0x1.0p0,0x1.0p-30
+cos,0x1.0p0,-0x1.0p-30
+cos,0x1.0p0,0x1.0000000000001p-30
+cos,0x1.0p0,-0x1.0000000000001p-30
+cos,-0x1.fffe62ecfab75p-1,-0x1.fffffffffffffp1023
+cos,-0x1.fffe62ecfab75p-1,0x1.fffffffffffffp1023
+cos,-0x1.fffe62ecfab75p-1,0x1.fffffffffffffp1023
+cos,-0x1.fffe62ecfab75p-1,-0x1.fffffffffffffp1023
+cos,-0x1.fffe62ecfab75p-1,0x1.fffffffffffffp1023
+cos,-0x1.fffe62ecfab75p-1,-0x1.fffffffffffffp1023
+cos,0x1.7ffdfb4c5309p-2,0x1.ffffffffffffep1023
+cos,0x1.7ffdfb4c5309p-2,-0x1.ffffffffffffep1023
+cos,-0x1.0p0,0x1.921fb54442d18p1
+cos,-0x1.0p0,-0x1.921fb54442d18p1
+cos,0x1.1a62633145c07p-54,0x1.921fb54442d18p0
+cos,0x1.1a62633145c07p-54,-0x1.921fb54442d18p0
+cos,0x1.14a280fb5068ap-1,0x1.0000000000001p0
+cos,0x1.14a280fb5068ap-1,-0x1.0000000000001p0
+cos,0x1.14a280fb5068cp-1,0x1.0p0
+cos,0x1.14a280fb5068cp-1,-0x1.0p0
+cos,0x1.14a280fb5068cp-1,0x1.fffffffffffffp-1
+cos,0x1.14a280fb5068cp-1,-0x1.fffffffffffffp-1
+cos,0x1.6a09e667f3bcdp-1,0x1.921fb54442d18p-1
+cos,0x1.6a09e667f3bcdp-1,-0x1.921fb54442d18p-1
+cos,0x1.0p0,0x1.0000000000001p-1022
+cos,0x1.0p0,-0x1.0000000000001p-1022
+cos,0x1.0p0,0x1.0p-1022
+cos,0x1.0p0,-0x1.0p-1022
+cos,0x1.0p0,0x0.fffffffffffffp-1022
+cos,0x1.0p0,-0x0.fffffffffffffp-1022
+cos,0x1.0p0,0x0.ffffffffffffep-1022
+cos,0x1.0p0,-0x0.ffffffffffffep-1022
+cos,0x1.0p0,0x0.0000000000002p-1022
+cos,0x1.0p0,-0x0.0000000000002p-1022
+cos,0x1.0p0,0x0.0000000000001p-1022
+cos,0x1.0p0,-0x0.0000000000001p-1022
+cos,0x1.0p0,0x0.0p0
+cos,0x1.0p0,-0x0.0p0
+exp,0x1.0000000000002p0,0x1.ffffffffffffep-52
+exp,0x1.000000000012p0,0x1.1ffffffffff5ep-44
+exp,0x1.000000000208p0,0x1.03fffffffef7fp-39
+exp,0x1.00000000c1b59p0,0x1.836b2fff6d6cbp-33
+exp,0x1.000000033d397p0,0x1.9e9cbbfd6080bp-31
+exp,0x1.003af6c37c1d3p0,0x1.d77fd13d27fffp-11
+exp,0x1.016b4df3299d8p0,0x1.6a4d1af9cc989p-8
+exp,0x1.0ca4a41663fep0,0x1.8ae823850230bp-5
+exp,0x1.1538ea18a4585p0,0x1.46370d915991bp-4
+exp,0x1.47408cb9583cep0,0x1.f6e4c3ced7c72p-3
+exp,0x1.27c2e4bc1ee7p1,0x1.accfbe46b4efp-1
+exp,0x1.557d4acd7e556p2,0x1.aca7ae8da5a7bp0
+exp,0x1.91a8dff540ff7p2,0x1.d6336a88077aap0
+exp,0x1.8ede492d96072p3,0x1.42ee3c7dc4946p1
+exp,0x1.ac50b409c8aeep8,0x1.83d4bcdebb3f4p2
+exp,0x1.f3e558cf4de54p-23,-0x1.e8bdbfcd9144ep3
+exp,0x1.951c6dc5d24e2p-9,-0x1.71e0b869b5e79p2
+exp,0x1.1064b2c103ddap-3,-0x1.02393d5976769p1
+exp,0x1.3ef1e9b3a81c8p-2,-0x1.2a9cad9998262p0
+exp,0x1.534d4de870713p-3,-0x1.cc37ef7de7501p0
+exp,0x1.2217147b85eaap-1,-0x1.22e24fa3d5cf9p-1
+exp,0x1.9403fd0ee51c8p-2,-0x1.dc2b5df1f7d3dp-1
+exp,0x1.baded30cbf1c4p-1,-0x1.290ea09e36479p-3
+exp,0x1.ffe5d0bb7eabfp-1,-0x1.a2fefefd580dfp-13
+exp,0x1.ffffff84b39c5p-1,-0x1.ed318efb627eap-27
+exp,0x1.fffffffad0ae6p-1,-0x1.4bd46601ae1efp-31
+exp,0x1.ffffffffff7p-1,-0x1.2000000000288p-42
+exp,0x1.fffffffffffdp-1,-0x1.8000000000012p-48
+exp,0x1.ffffffffffffcp-1,-0x1.0000000000001p-51
+exp,0x1.0000000000001p0,0x1.fffffffffffffp-53
+exp,0x1.000000000002p0,0x1.fffffffffffep-48
+exp,0x1.000000017ffe8p0,0x1.7ffe7ffee0024p-32
+exp,0x1.0000000180018p0,0x1.80017ffedffdcp-32
+exp,0x1.00000075e9f64p0,0x1.d7a7d893609e5p-26
+exp,0x1.0006e83736f8cp0,0x1.ba07d73250de7p-14
+exp,0x1.de7cd6751029ap16,0x1.76e7e5d7b6eacp3
+exp,0x1.1d71965f516aep19,0x1.a8ead058bc6b8p3
+exp,0x1.a8c02e974c315p25,0x1.1d5c2daebe367p4
+exp,0x1.b890ca8637ae2p40,0x1.c44ce0d716a1ap4
+exp,0x1.f03f56a88b5d8p-1,-0x1.0000000000001p-5
+exp,0x1.ff003ff556aa8p-1,-0x1.000000000000ap-9
+exp,0x1.8ebef9eac81fcp-1,-0x1.0000000000025p-2
+exp,0x1.fc03fd56a469cp-1,-0x1.0000000171051p-7
+exp,0x1.78b5612dbee01p-2,-0x1.0000018p0
+exp,0x1.969c870ea9f5ap-93,-0x1.000001e3ep6
+exp,0x1.78af867bc511ep-2,-0x1.0003fcp0
+exp,0x1.fffffffffefffp-1,-0x1.00080000004p-41
+exp,0x1.789214093c81ep-2,-0x1.0018p0
+exp,0x1.8e298e52fcce8p-1,-0x1.018p-2
+exp,0x1.aa6ffb0ba51ap-24,-0x1.0201p4
+exp,0x1.dd7a46b8d85d6p-376,-0x1.04p8
+exp,0x1.33e96ca3bcf3ep-1,-0x1.045b94872413p-1
+exp,0x1.ef2f652dc2606p-1,-0x1.118e05cfa3e8p-5
+exp,0x1.a5d2ce977bbe2p-7,-0x1.169156e17b9b9p2
+exp,0x1.a0207cf4190f7p-7,-0x1.17701b3bf0502p2
+exp,0x1.fb97e1ff8cbbap-1,-0x1.1b4p-7
+exp,0x1.bcff09ae30c46p-1,-0x1.1f4p-3
+exp,0x1.fee70cf5e86efp-833,-0x1.2059ad42c3cf7p9
+exp,0x1.7ccd3f3340746p-1,-0x1.2f269d2ca38d2p-2
+exp,0x1.09cdb36e977bcp-14,-0x1.3553cf1828b0bp3
+exp,0x1.f9dc5cd546d9cp-449,-0x1.368ac083128fcp8
+exp,0x1.f1c53c907f6f5p-15,-0x1.376e8f679ae16p3
+exp,0x1.f24595954e662p-8,-0x1.3844f67495f7dp2
+exp,0x1.fb56521290a22p-905,-0x1.394e9e1b089d7p9
+exp,0x1.dc1658ff6e07p-114,-0x1.3997ea51e5271p6
+exp,0x1.ec8b3c090f8b9p-1,-0x1.3d5de560e1906p-5
+exp,0x1.af411bf985221p-951,-0x1.4954aa552a96p9
+exp,0x1.e1b71d238d508p-957,-0x1.4b5ad6a9ad6adp9
+exp,0x1.cc666a3519cap-973,-0x1.50ec32686a834p9
+exp,0x1.22462bd5f72b1p-976,-0x1.52316872b0222p9
+exp,0x1.c1ebc18610302p-981,-0x1.53b4ed3b4ec77p9
+exp,0x1.8d015bcaf9e19p-981,-0x1.53c4f13c4f079p9
+exp,0x1.fd5835460ed49p-989,-0x1.566ad4a41becp9
+exp,0x1.58733fbc088fp-994,-0x1.585883e7b3b38p9
+exp,0x1.b052090690482p-32,-0x1.5a81ecf68beccp4
+exp,0x1.df6154bc644dbp-1015,-0x1.5f75629af4eb7p9
+exp,0x0.ffa586d1b841ap-1022,-0x1.6232eb1c432f2p9
+exp,0x0.b12f6ea63a89fp-1022,-0x1.6261d7dbf48ccp9
+exp,0x1.d572d24973be2p-1,-0x1.6364b8f747e32p-4
+exp,0x1.ee4dd79224578p-9,-0x1.6524796b40895p2
+exp,0x1.f660c59b2945p-5,-0x1.6551daae369cep1
+exp,0x0.0003540e0893ep-1022,-0x1.672463f141607p9
+exp,0x1.d4e7fc331b732p-1,-0x1.6820c99c1dc16p-4
+exp,0x1.fcc448acf4765p-528,-0x1.6d4b7e82c3f02p8
+exp,0x1.7fff5a1bffcb2p-529,-0x1.6e44f765fda76p8
+exp,0x1.fa4ecd8ae5718p-1,-0x1.6e56e725b8304p-7
+exp,0x1.e8d2dafd017cep-3,-0x1.6ecp0
+exp,0x0.0000000001215p-1022,-0x1.7p9
+exp,0x0.000000000000ep-1022,-0x1.72e42p9
+exp,0x1.a349b2329c678p-273,-0x1.7978bac71121cp7
+exp,0x1.d2a6d5ea995c2p-1,-0x1.7bde79e0f970cp-4
+exp,0x1.b776dc64c76d2p-3,-0x1.8ap0
+exp,0x1.4446fcf7da68ap-72,-0x1.8d5c84f0bac8cp5
+exp,0x1.e72a0b68bb82cp-73,-0x1.8fa68b444723p5
+exp,0x1.fc33d5e1ca6dfp-75,-0x1.9a671693b946bp5
+exp,0x1.e6981fd6ef79cp-1,-0x1.a0ec89f897a75p-5
+exp,0x1.f2b9d3b6cf227p-1,-0x1.ae6p-6
+exp,0x1.e5034c8d191bcp-1,-0x1.bb9706e2f1bb4p-5
+exp,0x1.f24dc90f9fbecp-1,-0x1.bc3edad2e1efbp-6
+exp,0x1.71f237d64a6ecp-11,-0x1.d0697edbe0052p2
+exp,0x1.f12c0d3addaa4p-1,-0x1.e18p-6
+exp,0x1.f110dd9073d72p-1,-0x1.e5p-6
+exp,0x1.f3aa7a860574cp-705,-0x1.e7fffffffffffp8
+exp,0x1.f0f898d55117p-1,-0x1.e82p-6
+exp,0x1.ff814fff18dadp-1,-0x1.fafebfafebfbp-11
+exp,0x1.ffffffff01c07p-1,-0x1.fc7f1fc7f2p-34
+exp,0x1.7907d4148bd92p-2,-0x1.ff8ffffffffffp-1
+exp,0x1.ffffffffffff8p-1,-0x1.ff8ffffffffffp-51
+exp,0x1.e0fbb03a0c27ep-1,-0x1.ffeffffffffffp-5
+exp,0x1.ffffffffff001p-1,-0x1.ffeffffffffffp-42
+exp,0x1.ffffffffffp-1,-0x1.fff00000008p-42
+exp,0x1.0p0,-0x1.fff8e61eadd48p-101
+exp,0x1.fffffffffc001p-1,-0x1.fffbfffffffffp-40
+exp,0x1.fffffffffcp-1,-0x1.fffff1fffffffp-40
+exp,0x1.ff800ffeaac01p-1,-0x1.ffffffffffda5p-11
+exp,0x1.e355bbaee8d86p-24,-0x1.fffffffffff7dp3
+exp,0x1.78b56362cef3ep-2,-0x1.ffffffffffff8p-1
+exp,0x1.0p0,-0x0.ffffffffffffep-1022
+exp,0x1.42eb9f39afbacp-185,-0x1.ffffffffffffep6
+exp,0x1.0p0,0x1.0p-53
+exp,0x1.95e54c5dd4218p184,0x1.0p7
+exp,0x1.9476504ba8857p738,0x1.0000000000001p9
+exp,0x1.0100802ab5578p0,0x1.0000000000003p-8
+exp,0x1.0000004000001p0,0x1.0000000000007p-26
+exp,0x1.d8e64b8f26c12p2,0x1.000000008p1
+exp,0x1.749ea7e015bc2p11,0x1.00000001p3
+exp,0x1.0f2ebd2c65d9ap23,0x1.00000002p4
+exp,0x1.0f2ec1473afeap23,0x1.0000004p4
+exp,0x1.0000000001p0,0x1.0008p-40
+exp,0x1.00000000008p0,0x1.001p-41
+exp,0x1.0000000000001p0,0x1.001p-53
+exp,0x1.a8bf81a597eddp184,0x1.00173eab3623ap7
+exp,0x1.75e54175aabb4p11,0x1.001cp3
+exp,0x1.60008fbed6c52p1,0x1.02f8af8af8affp0
+exp,0x1.04184bb80ff44p0,0x1.04p-6
+exp,0x1.0000084000221p0,0x1.08p-21
+exp,0x1.2338ab9b7432p0,0x1.08000001d0fc8p-3
+exp,0x1.acc91bfa7c54cp0,0x1.0814419d6a65ap-1
+exp,0x1.a4e4693413b9ap400,0x1.15c18de877563p8
+exp,0x1.0000000000004p0,0x1.1ffffffffffffp-50
+exp,0x1.eaa521edf1bc2p846,0x1.2586ca9cf411bp9
+exp,0x1.fca9c47016cb1p26,0x1.2b55c037ebb9dp4
+exp,0x1.fcbb1e5c8d535p26,0x1.2b564bee0a6cap4
+exp,0x1.cc0f9d911f1d1p0,0x1.2c2p-1
+exp,0x1.b68a28b09fe94p6,0x1.2c9e33f794769p2
+exp,0x1.d2e035b1892d6p0,0x1.33a74ff06fb66p-1
+exp,0x1.6acde844356cap3,0x1.36cce3c3925p1
+exp,0x1.06dadee28c11cp7,0x1.38389c48b0fcep2
+exp,0x1.c78f37f07cea6p904,0x1.3997381d7d94fp9
+exp,0x1.bfe0c519166c4p1,0x1.40a339c81cecbp0
+exp,0x1.fbc9c30603087p927,0x1.419dbcc48677p9
+exp,0x1.f1ef9c8a4fdaep930,0x1.42a565e456e04p9
+exp,0x1.da134d5a4d1e2p934,0x1.44020100804p9
+exp,0x1.f4ec44194b642p938,0x1.456bf23e02428p9
+exp,0x1.ea91d9533b394p939,0x1.45c1feef8086cp9
+exp,0x1.cb419b9279b36p943,0x1.471c71c71c71cp9
+exp,0x1.6d14308828322p29,0x1.474c9cc44cc25p4
+exp,0x1.c0194b4186e28p956,0x1.4b9ab1781203p9
+exp,0x1.15c605853476cp0,0x1.4e59dc7e2b053p-4
+exp,0x1.6dee38735a6d4p972,0x1.510c5465d984bp9
+exp,0x1.f1e96be2a52cdp0,0x1.549b0f5742382p-1
+exp,0x1.f253c5990aad2p0,0x1.55085fb86501ap-1
+exp,0x1.279b1c43a2662p993,0x1.58383126e94bfp9
+exp,0x1.6fd5ab59153f4p996,0x1.595e5795e592bp9
+exp,0x1.5ecf187653954p1004,0x1.5c1e0f0783c1p9
+exp,0x1.f2a3c29fc6d72p1008,0x1.5dadf5d1e452cp9
+exp,0x1.edcb14879613ep1009,0x1.5e056ed40e56ep9
+exp,0x1.fcc7e5ca80b1fp0,0x1.5fa97bb4e906p-1
+exp,0x1.f8b5c987a3d88p3,0x1.610e47e1325dcp1
+exp,0x1.f1e9d8cf24fcep7,0x1.611b19dcc53e4p2
+exp,0x1.ffc045692e8ap1023,0x1.62e41fffffffap9
+exp,0x1.ffc045693009dp1023,0x1.62e42p9
+exp,0x1.ffc04569a2fb8p1023,0x1.62e42000001ccp9
+exp,0x1.fffffffffeb2ap1023,0x1.62e42fefa39eap9
+exp,0x1.00000b40003f5p0,0x1.68p-21
+exp,0x1.17e62f70bec9ap8,0x1.689a7dc5921b8p2
+exp,0x1.6daaa1336a315p264,0x1.6eb1de69ace32p7
+exp,0x1.72a9dadea7498p0,0x1.7bp-2
+exp,0x1.1ed3fe64fc53ap2,0x1.7fffffffffff9p0
+exp,0x1.0000000000001p0,0x1.7ffffffffffffp-52
+exp,0x1.fe31152b7ef6bp553,0x1.8p8
+exp,0x1.74d77b76d9516p0,0x1.81p-2
+exp,0x1.f0e3e5b6c17cp556,0x1.820d92fc4b42ap8
+exp,0x1.00000000c1b59p0,0x1.836b2fff6d6cbp-33
+exp,0x1.78b69d690db7ap570,0x1.8b7aee631f489p8
+exp,0x1.4dad95877ae08p144,0x1.905011e0df629p6
+exp,0x1.fcbb8778f6121p144,0x1.91fffp6
+exp,0x1.7a5b2771e0a16p4,0x1.94e54738fb4b7p1
+exp,0x1.7d676a26fe5cap0,0x1.984p-2
+exp,0x1.698764128a444p147,0x1.98f381d7db44fp6
+exp,0x1.44e5a752f9e1fp9,0x1.9e8186b267a28p2
+exp,0x1.8023d298e373p0,0x1.9f91c1449c421p-2
+exp,0x1.df9bd06daf8cep299,0x1.9fc1f212d70f6p7
+exp,0x1.81a4fbca9dcdcp0,0x1.a392789eafce9p-2
+exp,0x1.825f354ccf6f3p0,0x1.a5807ca1392b2p-2
+exp,0x1.3c1e2876834aap0,0x1.bp-3
+exp,0x1.1c7e1aca53796p0,0x1.b04p-4
+exp,0x1.a2d50b8b2880ep331,0x1.cbd917ccad096p7
+exp,0x1.419c8a8da1b7ap1,0x1.d7b677e333d38p-1
+exp,0x1.41d1b8b4649ecp1,0x1.d80b1a6330bebp-1
+exp,0x1.bf3447921fd3ap10,0x1.df50d9af9e41p2
+exp,0x1.9919794bc862ap0,0x1.e0081ebc3264ep-2
+exp,0x1.76a62bad715b4p5,0x1.ec5bb209e5707p1
+exp,0x1.c701554c761aap2,0x1.f62p0
+exp,0x1.c3dda3c952b92p727,0x1.f87c7820d8446p8
+exp,0x1.d28c6097b9d56p2,0x1.fc89dc1aa909cp0
+exp,0x1.4231178c2349p734,0x1.fcfffffffffffp8
+exp,0x1.04034591911e8p0,0x1.fda6dfe27ffffp-7
+exp,0x1.a5b5691c4b0fp0,0x1.ff1dd1fffffffp-2
+exp,0x1.0000000000004p0,0x1.ff8ffffffffffp-51
+exp,0x1.6d4fd9ab47c92p738,0x1.ffe5effffffffp8
+exp,0x1.0000000000fffp0,0x1.ffefffffff001p-41
+exp,0x1.74418bce788ecp11,0x1.ffeffffffffffp2
+exp,0x1.0000000001p0,0x1.fffp-41
+exp,0x1.0000000001p0,0x1.ffffe3fffffffp-41
+exp,0x1.d8e64b8d21852p2,0x1.ffffffffe7fffp0
+exp,0x1.0p0,0x0.ffffffffffffep-1022
+exp,0x1.0p0,0x1.ffffffffffffep-54
+exp,0x1.0p0,0x1.fffffffffffffp-54
+exp,0x1.304d6aeca2525p69,0x1.7ffffffffffffp5
+exp,0x1.304d6aeca254bp69,0x1.8p5
+exp,0x1.304d6aeca2571p69,0x1.8000000000001p5
+exp,0x1.f8e6c24b558efp-76,-0x1.a000000000001p5
+exp,0x1.f8e6c24b5592ep-76,-0x1.ap5
+exp,0x1.f8e6c24b5596dp-76,-0x1.9ffffffffffffp5
+exp,0x1.55779b984f396p115,0x1.3ffffffffffffp6
+exp,0x1.55779b984f3ebp115,0x1.4p6
+exp,0x1.55779b984f44p115,0x1.4000000000001p6
+exp,0x1.07b7112bc1fbcp-127,-0x1.6000000000001p6
+exp,0x1.07b7112bc1ffep-127,-0x1.6p6
+exp,0x1.07b7112bc204p-127,-0x1.5ffffffffffffp6
+exp,0x1.40a4b9c271508p923,0x1.3ffffffffffffp9
+exp,0x1.40a4b9c27178ap923,0x1.4p9
+exp,0x1.40a4b9c271a0bp923,0x1.4000000000001p9
+exp,0x1.44a3824e525d6p-1016,-0x1.6000000000001p9
+exp,0x1.44a3824e5285fp-1016,-0x1.6p9
+exp,0x1.44a3824e52ae8p-1016,-0x1.5ffffffffffffp9
+exp,0x1.03996528e072bp75,0x1.9ffffffffffffp5
+exp,0x1.03996528e074cp75,0x1.ap5
+exp,0x1.03996528e076cp75,0x1.a000000000001p5
+exp,0x1.aebabae3a417fp-70,-0x1.8000000000001p5
+exp,0x1.aebabae3a41b5p-70,-0x1.8p5
+exp,0x1.aebabae3a41eap-70,-0x1.7ffffffffffffp5
+exp,0x1.f1056dc7bf1b1p126,0x1.5ffffffffffffp6
+exp,0x1.f1056dc7bf22dp126,0x1.6p6
+exp,0x1.f1056dc7bf2aap126,0x1.6000000000001p6
+exp,0x1.7fd974d372de4p-116,-0x1.4000000000001p6
+exp,0x1.7fd974d372e44p-116,-0x1.4p6
+exp,0x1.7fd974d372ea4p-116,-0x1.3ffffffffffffp6
+exp,0x1.93bf4ec282bd4p1015,0x1.5ffffffffffffp9
+exp,0x1.93bf4ec282efbp1015,0x1.6p9
+exp,0x1.93bf4ec283223p1015,0x1.6000000000001p9
+exp,0x1.98c72ca0cab15p-924,-0x1.4000000000001p9
+exp,0x1.98c72ca0cae46p-924,-0x1.4p9
+exp,0x1.98c72ca0cb178p-924,-0x1.3ffffffffffffp9
+exp,0x1.61013a44a981cp-822,-0x1.1cb90bfbe8e7cp9
+exp,0x1.8087717a7f08ap-905,-0x1.397217f7d1cf8p9
+exp,0x1.a2de59d854521p-988,-0x1.562b23f3bab73p9
+exp,0x1.fffffffffffffp-2,-0x1.62e42fefa39fp-1
+exp,0x1.0p-1,-0x1.62e42fefa39efp-1
+exp,0x1.0000000000001p-1,-0x1.62e42fefa39eep-1
+exp,0x1.6a09e667f3bccp-1,-0x1.62e42fefa39fp-2
+exp,0x1.6a09e667f3bccp-1,-0x1.62e42fefa39efp-2
+exp,0x1.6a09e667f3bcdp-1,-0x1.62e42fefa39eep-2
+exp,0x1.ae89f995ad3adp-1,-0x1.62e42fefa39fp-3
+exp,0x1.ae89f995ad3aep-1,-0x1.62e42fefa39efp-3
+exp,0x1.ae89f995ad3aep-1,-0x1.62e42fefa39eep-3
+exp,0x1.d5818dcfba487p-1,-0x1.62e42fefa39fp-4
+exp,0x1.d5818dcfba487p-1,-0x1.62e42fefa39efp-4
+exp,0x1.d5818dcfba487p-1,-0x1.62e42fefa39eep-4
+exp,0x1.ea4afa2a490dap-1,-0x1.62e42fefa39fp-5
+exp,0x1.ea4afa2a490dap-1,-0x1.62e42fefa39efp-5
+exp,0x1.ea4afa2a490dap-1,-0x1.62e42fefa39eep-5
+exp,0x1.f50765b6e454p-1,-0x1.62e42fefa39fp-6
+exp,0x1.f50765b6e454p-1,-0x1.62e42fefa39efp-6
+exp,0x1.f50765b6e454p-1,-0x1.62e42fefa39eep-6
+exp,0x1.059b0d3158574p0,0x1.62e42fefa39eep-6
+exp,0x1.059b0d3158574p0,0x1.62e42fefa39efp-6
+exp,0x1.059b0d3158574p0,0x1.62e42fefa39fp-6
+exp,0x1.0b5586cf9890fp0,0x1.62e42fefa39eep-5
+exp,0x1.0b5586cf9890fp0,0x1.62e42fefa39efp-5
+exp,0x1.0b5586cf9890fp0,0x1.62e42fefa39fp-5
+exp,0x1.172b83c7d517bp0,0x1.62e42fefa39eep-4
+exp,0x1.172b83c7d517bp0,0x1.62e42fefa39efp-4
+exp,0x1.172b83c7d517bp0,0x1.62e42fefa39fp-4
+exp,0x1.306fe0a31b715p0,0x1.62e42fefa39eep-3
+exp,0x1.306fe0a31b715p0,0x1.62e42fefa39efp-3
+exp,0x1.306fe0a31b715p0,0x1.62e42fefa39fp-3
+exp,0x1.6a09e667f3bccp0,0x1.62e42fefa39eep-2
+exp,0x1.6a09e667f3bccp0,0x1.62e42fefa39efp-2
+exp,0x1.6a09e667f3bcdp0,0x1.62e42fefa39fp-2
+exp,0x1.fffffffffffffp0,0x1.62e42fefa39eep-1
+exp,0x1.0p1,0x1.62e42fefa39efp-1
+exp,0x1.0p1,0x1.62e42fefa39fp-1
+exp,0x1.ffffffffffffep1,0x1.62e42fefa39eep0
+exp,0x1.0p2,0x1.62e42fefa39efp0
+exp,0x1.0000000000001p2,0x1.62e42fefa39fp0
+exp,0x1.ffffffffffffbp3,0x1.62e42fefa39eep1
+exp,0x1.fffffffffffffp3,0x1.62e42fefa39efp1
+exp,0x1.0000000000002p4,0x1.62e42fefa39fp1
+exp,0x1.ffffffffffff6p7,0x1.62e42fefa39eep2
+exp,0x1.ffffffffffffep7,0x1.62e42fefa39efp2
+exp,0x1.0000000000003p8,0x1.62e42fefa39fp2
+exp,0x1.fffffffffffedp15,0x1.62e42fefa39eep3
+exp,0x1.ffffffffffffdp15,0x1.62e42fefa39efp3
+exp,0x1.0000000000006p16,0x1.62e42fefa39fp3
+exp,0x1.fffffffffffd9p31,0x1.62e42fefa39eep4
+exp,0x1.ffffffffffff9p31,0x1.62e42fefa39efp4
+exp,0x1.000000000000dp32,0x1.62e42fefa39fp4
+exp,0x1.ffffffffffb2ap1023,0x1.62e42fefa39eep9
+exp,0x1.fffffffffff2ap1023,0x1.62e42fefa39efp9
+exp,0x0.000000000000ep-1022,-0x1.72e42fefa39fp9
+exp,0x0.000000000000ep-1022,-0x1.72e42fefa39efp9
+exp,0x0.000000000000ep-1022,-0x1.72e42fefa39eep9
+exp,0x1.8ebef9eac820ap-1,-0x1.0000000000001p-2
+exp,0x1.8ebef9eac820bp-1,-0x1.0p-2
+exp,0x1.8ebef9eac820bp-1,-0x1.fffffffffffffp-3
+exp,0x1.c3d6a24ed8221p-1,-0x1.0000000000001p-3
+exp,0x1.c3d6a24ed8222p-1,-0x1.0p-3
+exp,0x1.c3d6a24ed8222p-1,-0x1.fffffffffffffp-4
+exp,0x1.e0fabfbc702a4p-1,-0x1.0000000000001p-4
+exp,0x1.e0fabfbc702a4p-1,-0x1.0p-4
+exp,0x1.e0fabfbc702a4p-1,-0x1.fffffffffffffp-5
+exp,0x1.f03f56a88b5d8p-1,-0x1.0000000000001p-5
+exp,0x1.f03f56a88b5d8p-1,-0x1.0p-5
+exp,0x1.f03f56a88b5d8p-1,-0x1.fffffffffffffp-6
+exp,0x1.f80feabfeefa5p-1,-0x1.0000000000001p-6
+exp,0x1.f80feabfeefa5p-1,-0x1.0p-6
+exp,0x1.f80feabfeefa5p-1,-0x1.fffffffffffffp-7
+exp,0x1.fc03fd56aa225p-1,-0x1.0000000000001p-7
+exp,0x1.fc03fd56aa225p-1,-0x1.0p-7
+exp,0x1.fc03fd56aa225p-1,-0x1.fffffffffffffp-8
+exp,0x1.fe00ffaabffbcp-1,-0x1.0000000000001p-8
+exp,0x1.fe00ffaabffbcp-1,-0x1.0p-8
+exp,0x1.fe00ffaabffbcp-1,-0x1.fffffffffffffp-9
+exp,0x1.ff003ff556aa9p-1,-0x1.0000000000001p-9
+exp,0x1.ff003ff556aa9p-1,-0x1.0p-9
+exp,0x1.ff003ff556aa9p-1,-0x1.fffffffffffffp-10
+exp,0x1.ff800ffeaacp-1,-0x1.0000000000001p-10
+exp,0x1.ff800ffeaacp-1,-0x1.0p-10
+exp,0x1.ff800ffeaacp-1,-0x1.fffffffffffffp-11
+exp,0x1.fff0003fff555p-1,-0x1.0000000000001p-13
+exp,0x1.fff0003fff555p-1,-0x1.0p-13
+exp,0x1.fff0003fff555p-1,-0x1.fffffffffffffp-14
+exp,0x1.48b5e3c3e8186p0,0x1.fffffffffffffp-3
+exp,0x1.48b5e3c3e8186p0,0x1.0p-2
+exp,0x1.48b5e3c3e8187p0,0x1.0000000000001p-2
+exp,0x1.2216045b6f5cdp0,0x1.fffffffffffffp-4
+exp,0x1.2216045b6f5cdp0,0x1.0p-3
+exp,0x1.2216045b6f5cdp0,0x1.0000000000001p-3
+exp,0x1.1082b577d34edp0,0x1.fffffffffffffp-5
+exp,0x1.1082b577d34eep0,0x1.0p-4
+exp,0x1.1082b577d34eep0,0x1.0000000000001p-4
+exp,0x1.08205601127edp0,0x1.fffffffffffffp-6
+exp,0x1.08205601127edp0,0x1.0p-5
+exp,0x1.08205601127edp0,0x1.0000000000001p-5
+exp,0x1.04080ab55de39p0,0x1.fffffffffffffp-7
+exp,0x1.04080ab55de39p0,0x1.0p-6
+exp,0x1.04080ab55de39p0,0x1.0000000000001p-6
+exp,0x1.0202015600446p0,0x1.fffffffffffffp-8
+exp,0x1.0202015600446p0,0x1.0p-7
+exp,0x1.0202015600446p0,0x1.0000000000001p-7
+exp,0x1.0100802ab5577p0,0x1.fffffffffffffp-9
+exp,0x1.0100802ab5577p0,0x1.0p-8
+exp,0x1.0100802ab5577p0,0x1.0000000000001p-8
+exp,0x1.0080200556001p0,0x1.fffffffffffffp-10
+exp,0x1.0080200556001p0,0x1.0p-9
+exp,0x1.0080200556001p0,0x1.0000000000001p-9
+exp,0x1.00400800aab55p0,0x1.fffffffffffffp-11
+exp,0x1.00400800aab55p0,0x1.0p-10
+exp,0x1.00400800aab55p0,0x1.0000000000001p-10
+exp,0x1.0008002000555p0,0x1.fffffffffffffp-14
+exp,0x1.0008002000555p0,0x1.0p-13
+exp,0x1.0008002000555p0,0x1.0000000000001p-13
+exp,0x1.44109edb206a9p-739,-0x1.0000000000001p9
+exp,0x1.44109edb20931p-739,-0x1.0p9
+exp,0x1.44109edb20a76p-739,-0x1.fffffffffffffp8
+exp,0x1.9755956ad4d05p-370,-0x1.0000000000001p8
+exp,0x1.9755956ad4e9cp-370,-0x1.0p8
+exp,0x1.9755956ad4f68p-370,-0x1.fffffffffffffp7
+exp,0x1.42eb9f39afa6ap-185,-0x1.0000000000001p7
+exp,0x1.42eb9f39afb0bp-185,-0x1.0p7
+exp,0x1.42eb9f39afb5cp-185,-0x1.fffffffffffffp6
+exp,0x1.969d47321e466p-93,-0x1.0000000000001p6
+exp,0x1.969d47321e4ccp-93,-0x1.0p6
+exp,0x1.969d47321e4fep-93,-0x1.fffffffffffffp5
+exp,0x1.c8464f761642fp-47,-0x1.0000000000001p5
+exp,0x1.c8464f7616468p-47,-0x1.0p5
+exp,0x1.c8464f7616485p-47,-0x1.fffffffffffffp4
+exp,0x1.e355bbaee85adp-24,-0x1.0000000000001p4
+exp,0x1.e355bbaee85cbp-24,-0x1.0p4
+exp,0x1.e355bbaee85dap-24,-0x1.fffffffffffffp3
+exp,0x1.5fc21041027a2p-12,-0x1.0000000000001p3
+exp,0x1.5fc21041027adp-12,-0x1.0p3
+exp,0x1.5fc21041027b2p-12,-0x1.fffffffffffffp2
+exp,0x1.2c155b8213cfp-6,-0x1.0000000000001p2
+exp,0x1.2c155b8213cf4p-6,-0x1.0p2
+exp,0x1.2c155b8213cf7p-6,-0x1.fffffffffffffp1
+exp,0x1.152aaa3bf81c9p-3,-0x1.0000000000001p1
+exp,0x1.152aaa3bf81ccp-3,-0x1.0p1
+exp,0x1.152aaa3bf81cdp-3,-0x1.fffffffffffffp0
+exp,0x1.78b56362cef36p-2,-0x1.0000000000001p0
+exp,0x1.78b56362cef38p-2,-0x1.0p0
+exp,0x1.78b56362cef38p-2,-0x1.fffffffffffffp-1
+exp,0x1.9476504ba839ap738,0x1.fffffffffffffp8
+exp,0x1.9476504ba852ep738,0x1.0p9
+exp,0x1.9476504ba8857p738,0x1.0000000000001p9
+exp,0x1.41c7a8814be19p369,0x1.fffffffffffffp7
+exp,0x1.41c7a8814bebap369,0x1.0p8
+exp,0x1.41c7a8814bffcp369,0x1.0000000000001p8
+exp,0x1.95e54c5dd41b2p184,0x1.fffffffffffffp6
+exp,0x1.95e54c5dd4218p184,0x1.0p7
+exp,0x1.95e54c5dd42e2p184,0x1.0000000000001p7
+exp,0x1.425982cf597a5p92,0x1.fffffffffffffp5
+exp,0x1.425982cf597cdp92,0x1.0p6
+exp,0x1.425982cf5981ep92,0x1.0000000000001p6
+exp,0x1.1f43fcc4b661bp46,0x1.fffffffffffffp4
+exp,0x1.1f43fcc4b662cp46,0x1.0p5
+exp,0x1.1f43fcc4b665p46,0x1.0000000000001p5
+exp,0x1.0f2ebd0a80018p23,0x1.fffffffffffffp3
+exp,0x1.0f2ebd0a8002p23,0x1.0p4
+exp,0x1.0f2ebd0a80031p23,0x1.0000000000001p4
+exp,0x1.749ea7d470c68p11,0x1.fffffffffffffp2
+exp,0x1.749ea7d470c6ep11,0x1.0p3
+exp,0x1.749ea7d470c7ap11,0x1.0000000000001p3
+exp,0x1.b4c902e273a55p5,0x1.fffffffffffffp1
+exp,0x1.b4c902e273a58p5,0x1.0p2
+exp,0x1.b4c902e273a5fp5,0x1.0000000000001p2
+exp,0x1.d8e64b8d4ddacp2,0x1.fffffffffffffp0
+exp,0x1.d8e64b8d4ddaep2,0x1.0p1
+exp,0x1.d8e64b8d4ddb2p2,0x1.0000000000001p1
+exp,0x1.5bf0a8b145769p1,0x1.fffffffffffffp-1
+exp,0x1.5bf0a8b14576ap1,0x1.0p0
+exp,0x1.5bf0a8b14576bp1,0x1.0000000000001p0
+exp,0x1.ffc045692fc9ep1023,0x1.62e41ffffffffp9
+exp,0x1.ffc045693009dp1023,0x1.62e42p9
+exp,0x1.ffc045693049dp1023,0x1.62e4200000001p9
+exp,0x0.000000000000ep-1022,-0x1.72e4200000001p9
+exp,0x0.000000000000ep-1022,-0x1.72e42p9
+exp,0x0.000000000000ep-1022,-0x1.72e41ffffffffp9
+exp,0x1.724046eb09339p4,0x1.921fb54442d18p1
+exp,0x1.33dedc855935fp2,0x1.921fb54442d18p0
+exp,0x1.5bf0a8b14576bp1,0x1.0000000000001p0
+exp,0x1.5bf0a8b14576ap1,0x1.0p0
+exp,0x1.5bf0a8b145769p1,0x1.fffffffffffffp-1
+exp,0x1.18bd669471caap1,0x1.921fb54442d18p-1
+exp,0x1.0p0,0x1.0000000000001p-1022
+exp,0x1.0p0,0x1.0p-1022
+exp,0x1.0p0,0x0.fffffffffffffp-1022
+exp,0x1.0p0,0x0.ffffffffffffep-1022
+exp,0x1.0p0,0x0.0000000000002p-1022
+exp,0x1.0p0,0x0.0000000000001p-1022
+exp,0x1.0p0,0x0.0p0
+exp,0x1.0p0,-0x0.0p0
+exp,0x1.0p0,-0x0.0000000000001p-1022
+exp,0x1.0p0,-0x0.0000000000002p-1022
+exp,0x1.0p0,-0x0.ffffffffffffep-1022
+exp,0x1.0p0,-0x0.fffffffffffffp-1022
+exp,0x1.0p0,-0x1.0p-1022
+exp,0x1.0p0,-0x1.0000000000001p-1022
+exp,0x1.d2e171cf04879p-2,-0x1.921fb54442d18p-1
+exp,0x1.78b56362cef38p-2,-0x1.fffffffffffffp-1
+exp,0x1.78b56362cef38p-2,-0x1.0p0
+exp,0x1.78b56362cef36p-2,-0x1.0000000000001p0
+exp,0x1.a9bcc46f767ep-3,-0x1.921fb54442d18p0
+exp,0x1.620227b598efap-5,-0x1.921fb54442d18p1
+exp,0x0.0p0,-0x1.ffffffffffffep1023
+exp,0x0.0p0,-0x1.fffffffffffffp1023
+exp,0x1.fffffffffff2ap1023,0x1.62e42fefa39efp9
+exp,0x1.000000000007cp-1022,-0x1.6232bdd7abcd2p9
+exp,0x0.ffffffffffe7cp-1022,-0x1.6232bdd7abcd3p9
+abs,0x1.5bf0a8b145769p1,0x1.5bf0a8b145769p1,2.718281828459045
+abs,0x1.5bf0a8b145769p1,-0x1.5bf0a8b145769p1,-2.718281828459045
+abs,0x0.0p0,0x0.0p0,0.0
+abs,0x0.0p0,-0x0.0p0,-0.0
+abs,0x1.0p0,0x1.0p0,1.0
+abs,0x1.0p0,-0x1.0p0,-1.0
+abs,0x1.0p-1,-0x1.0p-1,-0.5
+abs,0x1.0p-1,0x1.0p-1,0.5
+abs,0x1.921fb54442d18p2,-0x1.921fb54442d18p2,-6.283185307179586
+abs,0x1.2d97c7f3321d2p2,-0x1.2d97c7f3321d2p2,-4.71238898038469
+abs,0x1.921fb54442d18p1,-0x1.921fb54442d18p1,-3.141592653589793
+abs,0x1.921fb54442d18p0,-0x1.921fb54442d18p0,-1.5707963267948966
+abs,0x0.0p0,0x0.0p0,0.0
+abs,0x1.921fb54442d18p0,0x1.921fb54442d18p0,1.5707963267948966
+abs,0x1.921fb54442d18p1,0x1.921fb54442d18p1,3.141592653589793
+abs,0x1.2d97c7f3321d2p2,0x1.2d97c7f3321d2p2,4.71238898038469
+abs,0x1.921fb54442d18p2,0x1.921fb54442d18p2,6.283185307179586
+acos,0x1.921fb54442d18p0,0x0.0p0,0.0
+acos,0x1.921fb54442d18p0,-0x0.0p0,-0.0
+acos,0x0.0p0,0x1.0p0,1.0
+acos,0x1.921fb54442d18p1,-0x1.0p0,-1.0
+acos,0x1.0c152382d7366p1,-0x1.0p-1,-0.5
+acos,0x1.0c152382d7366p0,0x1.0p-1,0.5
+acos,0x1.921fb54442d18p0,0x0.0p0,0.0
+asin,0x0.0p0,0x0.0p0,0.0
+asin,-0x0.0p0,-0x0.0p0,-0.0
+asin,0x1.921fb54442d18p0,0x1.0p0,1.0
+asin,-0x1.921fb54442d18p0,-0x1.0p0,-1.0
+asin,-0x1.0c152382d7366p-1,-0x1.0p-1,-0.5
+asin,0x1.0c152382d7366p-1,0x1.0p-1,0.5
+asin,0x0.0p0,0x0.0p0,0.0
+atan,0x1.37e1637253389p0,0x1.5bf0a8b145769p1,2.718281828459045
+atan,-0x1.37e1637253389p0,-0x1.5bf0a8b145769p1,-2.718281828459045
+atan,0x0.0p0,0x0.0p0,0.0
+atan,-0x0.0p0,-0x0.0p0,-0.0
+atan,0x1.921fb54442d18p-1,0x1.0p0,1.0
+atan,-0x1.921fb54442d18p-1,-0x1.0p0,-1.0
+atan,-0x1.dac670561bb4fp-2,-0x1.0p-1,-0.5
+atan,0x1.dac670561bb4fp-2,0x1.0p-1,0.5
+atan,-0x1.69b8154baf42ep0,-0x1.921fb54442d18p2,-6.283185307179586
+atan,-0x1.5c97d37d98aa4p0,-0x1.2d97c7f3321d2p2,-4.71238898038469
+atan,-0x1.433b8a322ddd2p0,-0x1.921fb54442d18p1,-3.141592653589793
+atan,-0x1.00fe987ed02ffp0,-0x1.921fb54442d18p0,-1.5707963267948966
+atan,0x0.0p0,0x0.0p0,0.0
+atan,0x1.00fe987ed02ffp0,0x1.921fb54442d18p0,1.5707963267948966
+atan,0x1.433b8a322ddd2p0,0x1.921fb54442d18p1,3.141592653589793
+atan,0x1.5c97d37d98aa4p0,0x1.2d97c7f3321d2p2,4.71238898038469
+atan,0x1.69b8154baf42ep0,0x1.921fb54442d18p2,6.283185307179586
+cos,-0x1.d2cec9a554007p-1,0x1.5bf0a8b145769p1,2.718281828459045
+cos,-0x1.d2cec9a554007p-1,-0x1.5bf0a8b145769p1,-2.718281828459045
+cos,0x1.0p0,0x0.0p0,0.0
+cos,0x1.0p0,-0x0.0p0,-0.0
+cos,0x1.14a280fb5068cp-1,0x1.0p0,1.0
+cos,0x1.14a280fb5068cp-1,-0x1.0p0,-1.0
+cos,0x1.c1528065b7d5p-1,-0x1.0p-1,-0.5
+cos,0x1.c1528065b7d5p-1,0x1.0p-1,0.5
+cos,0x1.0p0,-0x1.921fb54442d18p2,-6.283185307179586
+cos,-0x1.a79394c9e8a0ap-53,-0x1.2d97c7f3321d2p2,-4.71238898038469
+cos,-0x1.0p0,-0x1.921fb54442d18p1,-3.141592653589793
+cos,0x1.1a62633145c07p-54,-0x1.921fb54442d18p0,-1.5707963267948966
+cos,0x1.0p0,0x0.0p0,0.0
+cos,0x1.1a62633145c07p-54,0x1.921fb54442d18p0,1.5707963267948966
+cos,-0x1.0p0,0x1.921fb54442d18p1,3.141592653589793
+cos,-0x1.a79394c9e8a0ap-53,0x1.2d97c7f3321d2p2,4.71238898038469
+cos,0x1.0p0,0x1.921fb54442d18p2,6.283185307179586
+cosh,0x1.e70c4a4f41685p2,0x1.5bf0a8b145769p1,2.718281828459045
+cosh,0x1.e70c4a4f41685p2,-0x1.5bf0a8b145769p1,-2.718281828459045
+cosh,0x1.0p0,0x0.0p0,0.0
+cosh,0x1.0p0,-0x0.0p0,-0.0
+cosh,0x1.8b07551d9f551p0,0x1.0p0,1.0
+cosh,0x1.8b07551d9f551p0,-0x1.0p0,-1.0
+cosh,0x1.20ac1862ae8dp0,-0x1.0p-1,-0.5
+cosh,0x1.20ac1862ae8dp0,0x1.0p-1,0.5
+cosh,0x1.0bbf2bc2b69c6p8,-0x1.921fb54442d18p2,-6.283185307179586
+cosh,0x1.bd4e9aa3e9cdbp5,-0x1.2d97c7f3321d2p2,-4.71238898038469
+cosh,0x1.72f147fee4p3,-0x1.921fb54442d18p1,-3.141592653589793
+cosh,0x1.412cc2a8d4e9ep1,-0x1.921fb54442d18p0,-1.5707963267948966
+cosh,0x1.0p0,0x0.0p0,0.0
+cosh,0x1.412cc2a8d4e9ep1,0x1.921fb54442d18p0,1.5707963267948966
+cosh,0x1.72f147fee4p3,0x1.921fb54442d18p1,3.141592653589793
+cosh,0x1.bd4e9aa3e9cdbp5,0x1.2d97c7f3321d2p2,4.71238898038469
+cosh,0x1.0bbf2bc2b69c6p8,0x1.921fb54442d18p2,6.283185307179586
+exp,0x1.e4efb75e4527ap3,0x1.5bf0a8b145769p1,2.718281828459045
+exp,0x1.0e49787e20548p-4,-0x1.5bf0a8b145769p1,-2.718281828459045
+exp,0x1.0p0,0x0.0p0,0.0
+exp,0x1.0p0,-0x0.0p0,-0.0
+exp,0x1.5bf0a8b14576ap1,0x1.0p0,1.0
+exp,0x1.78b56362cef38p-2,-0x1.0p0,-1.0
+exp,0x1.368b2fc6f960ap-1,-0x1.0p-1,-0.5
+exp,0x1.a61298e1e069cp0,0x1.0p-1,0.5
+exp,0x1.e989f5d6dff5ep-10,-0x1.921fb54442d18p2,-6.283185307179586
+exp,0x1.265d4e92b6b9cp-7,-0x1.2d97c7f3321d2p2,-4.71238898038469
+exp,0x1.620227b598efap-5,-0x1.921fb54442d18p1,-3.141592653589793
+exp,0x1.a9bcc46f767ep-3,-0x1.921fb54442d18p0,-1.5707963267948966
+exp,0x1.0p0,0x0.0p0,0.0
+exp,0x1.33dedc855935fp2,0x1.921fb54442d18p0,1.5707963267948966
+exp,0x1.724046eb09339p4,0x1.921fb54442d18p1,3.141592653589793
+exp,0x1.bd4567b97538p6,0x1.2d97c7f3321d2p2,4.71238898038469
+exp,0x1.0bbeee9177e18p9,0x1.921fb54442d18p2,6.283185307179586
+log,0x1.0p0,0x1.5bf0a8b145769p1,2.718281828459045
+log,0x0.0p0,0x1.0p0,1.0
+log,-0x1.62e42fefa39efp-1,0x1.0p-1,0.5
+log,0x1.ce6bb25aa1315p-2,0x1.921fb54442d18p0,1.5707963267948966
+log,0x1.250d048e7a1bdp0,0x1.921fb54442d18p1,3.141592653589793
+log,0x1.8cd99441787dp0,0x1.2d97c7f3321d2p2,4.71238898038469
+log,0x1.d67f1c864beb4p0,0x1.921fb54442d18p2,6.283185307179586
+log10,0x1.bcb7b1526e50ep-2,0x1.5bf0a8b145769p1,2.718281828459045
+log10,0x0.0p0,0x1.0p0,1.0
+log10,-0x1.34413509f79ffp-2,0x1.0p-1,0.5
+log10,0x1.91a74c4f85377p-3,0x1.921fb54442d18p0,1.5707963267948966
+log10,0x1.fd14db31ba3bap-2,0x1.921fb54442d18p1,3.141592653589793
+log10,0x1.58b30fc65ffdcp-1,0x1.2d97c7f3321d2p2,4.71238898038469
+log10,0x1.98ab081dd8eddp-1,0x1.921fb54442d18p2,6.283185307179586
+sin,0x1.a4a3d9c2131dfp-2,0x1.5bf0a8b145769p1,2.718281828459045
+sin,-0x1.a4a3d9c2131dfp-2,-0x1.5bf0a8b145769p1,-2.718281828459045
+sin,0x0.0p0,0x0.0p0,0.0
+sin,-0x0.0p0,-0x0.0p0,-0.0
+sin,0x1.aed548f090ceep-1,0x1.0p0,1.0
+sin,-0x1.aed548f090ceep-1,-0x1.0p0,-1.0
+sin,-0x1.eaee8744b05fp-2,-0x1.0p-1,-0.5
+sin,0x1.eaee8744b05fp-2,0x1.0p-1,0.5
+sin,0x1.1a62633145c07p-52,-0x1.921fb54442d18p2,-6.283185307179586
+sin,0x1.0p0,-0x1.2d97c7f3321d2p2,-4.71238898038469
+sin,-0x1.1a62633145c07p-53,-0x1.921fb54442d18p1,-3.141592653589793
+sin,-0x1.0p0,-0x1.921fb54442d18p0,-1.5707963267948966
+sin,0x0.0p0,0x0.0p0,0.0
+sin,0x1.0p0,0x1.921fb54442d18p0,1.5707963267948966
+sin,0x1.1a62633145c07p-53,0x1.921fb54442d18p1,3.141592653589793
+sin,-0x1.0p0,0x1.2d97c7f3321d2p2,4.71238898038469
+sin,-0x1.1a62633145c07p-52,0x1.921fb54442d18p2,6.283185307179586
+sinh,0x1.e2d3246d48e6fp2,0x1.5bf0a8b145769p1,2.718281828459045
+sinh,-0x1.e2d3246d48e6fp2,-0x1.5bf0a8b145769p1,-2.718281828459045
+sinh,0x0.0p0,0x0.0p0,0.0
+sinh,-0x0.0p0,-0x0.0p0,-0.0
+sinh,0x1.2cd9fc44eb982p0,0x1.0p0,1.0
+sinh,-0x1.2cd9fc44eb982p0,-0x1.0p0,-1.0
+sinh,-0x1.0acd00fe63b97p-1,-0x1.0p-1,-0.5
+sinh,0x1.0acd00fe63b97p-1,0x1.0p-1,0.5
+sinh,-0x1.0bbeb1603926ap8,-0x1.921fb54442d18p2,-6.283185307179586
+sinh,-0x1.bd3c34cf00a25p5,-0x1.2d97c7f3321d2p2,-4.71238898038469
+sinh,-0x1.718f45d72e672p3,-0x1.921fb54442d18p1,-3.141592653589793
+sinh,-0x1.2690f661dd82p1,-0x1.921fb54442d18p0,-1.5707963267948966
+sinh,0x0.0p0,0x0.0p0,0.0
+sinh,0x1.2690f661dd82p1,0x1.921fb54442d18p0,1.5707963267948966
+sinh,0x1.718f45d72e672p3,0x1.921fb54442d18p1,3.141592653589793
+sinh,0x1.bd3c34cf00a25p5,0x1.2d97c7f3321d2p2,4.71238898038469
+sinh,0x1.0bbeb1603926ap8,0x1.921fb54442d18p2,6.283185307179586
+sqrt,0x1.a61298e1e069cp0,0x1.5bf0a8b145769p1,2.718281828459045
+sqrt,0x0.0p0,0x0.0p0,0.0
+sqrt,-0x0.0p0,-0x0.0p0,-0.0
+sqrt,0x1.0p0,0x1.0p0,1.0
+sqrt,0x1.6a09e667f3bcdp-1,0x1.0p-1,0.5
+sqrt,0x0.0p0,0x0.0p0,0.0
+sqrt,0x1.40d931ff62705p0,0x1.921fb54442d18p0,1.5707963267948966
+sqrt,0x1.c5bf891b4ef6ap0,0x1.921fb54442d18p1,3.141592653589793
+sqrt,0x1.15dce5d1822ccp1,0x1.2d97c7f3321d2p2,4.71238898038469
+sqrt,0x1.40d931ff62705p1,0x1.921fb54442d18p2,6.283185307179586
+tan,-0x1.cd5cdb683b402p-2,0x1.5bf0a8b145769p1,2.718281828459045
+tan,0x1.cd5cdb683b402p-2,-0x1.5bf0a8b145769p1,-2.718281828459045
+tan,0x0.0p0,0x0.0p0,0.0
+tan,-0x0.0p0,-0x0.0p0,-0.0
+tan,0x1.8eb245cbee3a6p0,0x1.0p0,1.0
+tan,-0x1.8eb245cbee3a6p0,-0x1.0p0,-1.0
+tan,-0x1.17b4f5bf3474ap-1,-0x1.0p-1,-0.5
+tan,0x1.17b4f5bf3474ap-1,0x1.0p-1,0.5
+tan,0x1.1a62633145c07p-52,-0x1.921fb54442d18p2,-6.283185307179586
+tan,-0x1.3570efd768923p52,-0x1.2d97c7f3321d2p2,-4.71238898038469
+tan,0x1.1a62633145c07p-53,-0x1.921fb54442d18p1,-3.141592653589793
+tan,-0x1.d02967c31cdb5p53,-0x1.921fb54442d18p0,-1.5707963267948966
+tan,0x0.0p0,0x0.0p0,0.0
+tan,0x1.d02967c31cdb5p53,0x1.921fb54442d18p0,1.5707963267948966
+tan,-0x1.1a62633145c07p-53,0x1.921fb54442d18p1,3.141592653589793
+tan,0x1.3570efd768923p52,0x1.2d97c7f3321d2p2,4.71238898038469
+tan,-0x1.1a62633145c07p-52,0x1.921fb54442d18p2,6.283185307179586
+tanh,0x1.fb8f76b1e2ab6p-1,0x1.5bf0a8b145769p1,2.718281828459045
+tanh,-0x1.fb8f76b1e2ab6p-1,-0x1.5bf0a8b145769p1,-2.718281828459045
+tanh,0x0.0p0,0x0.0p0,0.0
+tanh,-0x0.0p0,-0x0.0p0,-0.0
+tanh,0x1.85efab514f394p-1,0x1.0p0,1.0
+tanh,-0x1.85efab514f394p-1,-0x1.0p0,-1.0
+tanh,-0x1.d9353d7568af3p-2,-0x1.0p-1,-0.5
+tanh,0x1.d9353d7568af3p-2,0x1.0p-1,0.5
+tanh,-0x1.ffff15f81f9abp-1,-0x1.921fb54442d18p2,-6.283185307179586
+tanh,-0x1.ffead8c8b7e1ep-1,-0x1.2d97c7f3321d2p2,-4.71238898038469
+tanh,-0x1.fe175fa29281p-1,-0x1.921fb54442d18p1,-3.141592653589793
+tanh,-0x1.d594fdae482bap-1,-0x1.921fb54442d18p0,-1.5707963267948966
+tanh,0x0.0p0,0x0.0p0,0.0
+tanh,0x1.d594fdae482bap-1,0x1.921fb54442d18p0,1.5707963267948966
+tanh,0x1.fe175fa29281p-1,0x1.921fb54442d18p1,3.141592653589793
+tanh,0x1.ffead8c8b7e1ep-1,0x1.2d97c7f3321d2p2,4.71238898038469
+tanh,0x1.ffff15f81f9abp-1,0x1.921fb54442d18p2,6.283185307179586
diff --git a/support/src/test/java/libcore/java/security/StandardNames.java b/support/src/test/java/libcore/java/security/StandardNames.java
index 2090d3b..a526c2e 100644
--- a/support/src/test/java/libcore/java/security/StandardNames.java
+++ b/support/src/test/java/libcore/java/security/StandardNames.java
@@ -717,8 +717,8 @@
         addOpenSsl("TLS_PSK_WITH_3DES_EDE_CBC_SHA");
         addOpenSsl("TLS_PSK_WITH_AES_128_CBC_SHA");
         addOpenSsl("TLS_PSK_WITH_AES_256_CBC_SHA");
-        addOpenSsl("TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256");
-        addOpenSsl("TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384");
+        addOpenSsl("TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA");
+        addOpenSsl("TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA");
 
         // RFC 5746's Signaling Cipher Suite Value to indicate a request for secure renegotiation
         addBoth(CIPHER_SUITE_SECURE_RENEGOTIATION);
@@ -863,6 +863,15 @@
                             "SSL_RSA_WITH_RC4_128_SHA",
                             CIPHER_SUITE_SECURE_RENEGOTIATION);
 
+    // NOTE: This list needs to be kept in sync with Javadoc of javax.net.ssl.SSLSocket and
+    // javax.net.ssl.SSLEngine.
+    public static final List<String> CIPHER_SUITES_DEFAULT_PSK = Arrays.asList(
+            "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA",
+            "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA",
+            "TLS_PSK_WITH_AES_128_CBC_SHA",
+            "TLS_PSK_WITH_AES_256_CBC_SHA"
+            );
+
     private static final Set<String> PERMITTED_DEFAULT_KEY_EXCHANGE_ALGS =
             new HashSet<String>(Arrays.asList("RSA",
                                               "DHE_RSA",
diff --git a/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java b/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java
index 5741f2b..8dd2085 100644
--- a/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java
+++ b/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java
@@ -33,7 +33,6 @@
 import javax.net.ssl.SSLSocket;
 import javax.net.ssl.SSLSocketFactory;
 import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509ExtendedTrustManager;
 import javax.net.ssl.X509TrustManager;
 import junit.framework.Assert;
 import libcore.java.security.StandardNames;
@@ -83,8 +82,8 @@
     public final char[] serverStorePassword;
     public final KeyManager[] clientKeyManagers;
     public final KeyManager[] serverKeyManagers;
-    public final X509ExtendedTrustManager clientTrustManager;
-    public final X509ExtendedTrustManager serverTrustManager;
+    public final X509TrustManager clientTrustManager;
+    public final X509TrustManager serverTrustManager;
     public final SSLContext clientContext;
     public final SSLContext serverContext;
     public final SSLServerSocket serverSocket;
@@ -97,8 +96,8 @@
                            char[] serverStorePassword,
                            KeyManager[] clientKeyManagers,
                            KeyManager[] serverKeyManagers,
-                           X509ExtendedTrustManager clientTrustManager,
-                           X509ExtendedTrustManager serverTrustManager,
+                           X509TrustManager clientTrustManager,
+                           X509TrustManager serverTrustManager,
                            SSLContext clientContext,
                            SSLContext serverContext,
                            SSLServerSocket serverSocket,
@@ -189,8 +188,8 @@
                                       serverKeyStore, serverStorePassword,
                                       clientKeyManagers,
                                       serverKeyManagers,
-                                      (X509ExtendedTrustManager) clientTrustManagers,
-                                      (X509ExtendedTrustManager) serverTrustManagers,
+                                      (X509TrustManager) clientTrustManagers,
+                                      (X509TrustManager) serverTrustManagers,
                                       clientContext, serverContext,
                                       serverSocket, host, port);
         } catch (RuntimeException e) {
diff --git a/support/src/test/java/libcore/javax/net/ssl/TestTrustManager.java b/support/src/test/java/libcore/javax/net/ssl/TestTrustManager.java
index b703984..dc4bb28 100644
--- a/support/src/test/java/libcore/javax/net/ssl/TestTrustManager.java
+++ b/support/src/test/java/libcore/javax/net/ssl/TestTrustManager.java
@@ -20,7 +20,6 @@
 import java.net.Socket;
 import javax.net.ssl.SSLEngine;
 import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509ExtendedTrustManager;
 import javax.net.ssl.X509TrustManager;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
@@ -29,16 +28,15 @@
 
 /**
  * TestTrustManager is a simple proxy class that wraps an existing
- * X509ExtendedTrustManager to provide debug logging and recording of
+ * X509TrustManager to provide debug logging and recording of
  * values.
  */
-public final class TestTrustManager extends X509ExtendedTrustManager {
+public final class TestTrustManager implements X509TrustManager {
 
     private static final boolean LOG = false;
     private static final PrintStream out = LOG ? System.out : new NullPrintStream();
 
     private final X509TrustManager trustManager;
-    private final X509ExtendedTrustManager extendedTrustManager;
 
     public static TrustManager[] wrap(TrustManager[] trustManagers) {
         TrustManager[] result = trustManagers.clone();
@@ -49,23 +47,14 @@
     }
 
     public static TrustManager wrap(TrustManager trustManager) {
-        if (trustManager instanceof X509ExtendedTrustManager) {
-            return new TestTrustManager((X509ExtendedTrustManager) trustManager);
-        } else if (trustManager instanceof X509TrustManager) {
+        if (trustManager instanceof X509TrustManager) {
             return new TestTrustManager((X509TrustManager) trustManager);
         }
         return trustManager;
     }
 
-    public TestTrustManager(X509ExtendedTrustManager trustManager) {
-        out.println("TestTrustManager.<init> extendedTrustManager=" + trustManager);
-        this.extendedTrustManager = trustManager;
-        this.trustManager = trustManager;
-    }
-
     public TestTrustManager(X509TrustManager trustManager) {
         out.println("TestTrustManager.<init> trustManager=" + trustManager);
-        this.extendedTrustManager = null;
         this.trustManager = trustManager;
     }
 
@@ -84,50 +73,6 @@
         }
     }
 
-    @Override
-    public void checkClientTrusted(X509Certificate[] chain, String authType, Socket socket)
-            throws CertificateException {
-        if (extendedTrustManager == null) {
-            out.print("(fallback to X509TrustManager) ");
-            checkClientTrusted(chain, authType);
-            return;
-        }
-        out.print("TestTrustManager.checkClientTrusted "
-                + "chain=" + chain.length + " "
-                + "authType=" + authType + " "
-                + "socket=" + socket + " ");
-        try {
-            assertClientAuthType(authType);
-            extendedTrustManager.checkClientTrusted(chain, authType, socket);
-            out.println("OK");
-        } catch (CertificateException e) {
-            e.printStackTrace(out);
-            throw e;
-        }
-    }
-
-    @Override
-    public void checkClientTrusted(X509Certificate[] chain, String authType, SSLEngine engine)
-            throws CertificateException {
-        if (extendedTrustManager == null) {
-            out.print("(fallback to X509TrustManager) ");
-            checkClientTrusted(chain, authType);
-            return;
-        }
-        out.print("TestTrustManager.checkClientTrusted "
-                + "chain=" + chain.length + " "
-                + "authType=" + authType + " "
-                + "engine=" + engine + " ");
-        try {
-            assertClientAuthType(authType);
-            extendedTrustManager.checkClientTrusted(chain, authType, engine);
-            out.println("OK");
-        } catch (CertificateException e) {
-            e.printStackTrace(out);
-            throw e;
-        }
-    }
-
     private void assertClientAuthType(String authType) {
         if (!StandardNames.CLIENT_AUTH_TYPES.contains(authType)) {
             throw new AssertionError("Unexpected client auth type " + authType);
@@ -149,50 +94,6 @@
         }
     }
 
-    @Override
-    public void checkServerTrusted(X509Certificate[] chain, String authType, Socket socket)
-            throws CertificateException {
-        if (extendedTrustManager == null) {
-            out.print("(fallback to X509TrustManager) ");
-            checkServerTrusted(chain, authType);
-            return;
-        }
-        out.print("TestTrustManager.checkServerTrusted "
-                + "chain=" + chain.length + " "
-                + "authType=" + authType + " "
-                + "socket=" + socket.toString() + " ");
-        try {
-            assertServerAuthType(authType);
-            extendedTrustManager.checkServerTrusted(chain, authType, socket);
-            out.println("OK");
-        } catch (CertificateException e) {
-            e.printStackTrace(out);
-            throw e;
-        }
-    }
-
-    @Override
-    public void checkServerTrusted(X509Certificate[] chain, String authType, SSLEngine engine)
-            throws CertificateException {
-        if (extendedTrustManager == null) {
-            out.print("(fallback to X509TrustManager) ");
-            checkServerTrusted(chain, authType);
-            return;
-        }
-        out.print("TestTrustManager.checkServerTrusted "
-                + "chain=" + chain.length + " "
-                + "authType=" + authType + " "
-                + "engine=" + engine.toString() + " ");
-        try {
-            assertServerAuthType(authType);
-            extendedTrustManager.checkServerTrusted(chain, authType, engine);
-            out.println("OK");
-        } catch (CertificateException e) {
-            e.printStackTrace(out);
-            throw e;
-        }
-    }
-
     private void assertServerAuthType(String authType) {
         if (!StandardNames.SERVER_AUTH_TYPES.contains(authType)) {
             throw new AssertionError("Unexpected server auth type " + authType);
diff --git a/support/src/test/java/tests/support/Support_MapTest.java b/support/src/test/java/tests/support/Support_MapTest.java
new file mode 100644
index 0000000..5dfc69d
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_MapTest.java
@@ -0,0 +1,191 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.lang.reflect.Array;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import junit.framework.TestCase;
+
+public class Support_MapTest extends TestCase {
+
+    // must be a map containing the string keys "0"-"99" paired with the Integer
+    // values Integer(0) to Integer(99)
+    private final Map<String, Integer> modifiableMap;
+    private final Map<String, Integer> unmodifiableMap;
+
+    public Support_MapTest(String p1, Map<String, Integer> modifiableMap) {
+        super(p1);
+        this.modifiableMap = modifiableMap;
+        unmodifiableMap = Collections.unmodifiableMap(modifiableMap);
+    }
+
+    @Override
+    public void runTest() {
+        testContents(modifiableMap);
+        testContents(unmodifiableMap);
+
+        // values()
+        new Support_UnmodifiableCollectionTest("values() from map test", modifiableMap.values())
+                .runTest();
+        new Support_UnmodifiableCollectionTest("values() from unmodifiable map test",
+                unmodifiableMap.values()).runTest();
+
+        // entrySet()
+        testEntrySet(modifiableMap.entrySet(), unmodifiableMap.entrySet());
+
+        // keySet()
+        testKeySet(modifiableMap.keySet(), unmodifiableMap.keySet());
+    }
+
+    private void testContents(Map<String, Integer> map) {
+        // size
+        assertTrue("Size should return 100, returned: " + map.size(), map.size() == 100);
+
+        // containsKey
+        assertTrue("Should contain the key \"0\"", map.containsKey("0"));
+        assertTrue("Should contain the key \"50\"", map.containsKey("50"));
+        assertTrue("Should not contain the key \"100\"", !map.containsKey("100"));
+
+        // containsValue
+        assertTrue("Should contain the value 0", map.containsValue(0));
+        assertTrue("Should contain the value 50", map.containsValue(50));
+        assertTrue("Should not contain value 100", !map.containsValue(100));
+
+        // get
+        assertTrue("getting \"0\" didn't return 0", map.get("0") == 0);
+        assertTrue("getting \"50\" didn't return 50", map.get("50") == 50);
+        assertNull("getting \"100\" didn't return null", map.get("100"));
+
+        // isEmpty
+        assertTrue("should have returned false to isEmpty", !map.isEmpty());
+    }
+
+    private static void testEntrySet(
+            Set<Map.Entry<String, Integer>> referenceEntrySet,
+            Set<Map.Entry<String, Integer>> entrySet) {
+        // entrySet should be a set of mappings {"0", 0}, {"1",1}... {"99", 99}
+        assertEquals(100, referenceEntrySet.size());
+        assertEquals(100, entrySet.size());
+
+        // The ordering may be undefined for a map implementation but the ordering must be the
+        // same across iterator(), toArray() and toArray(T[]) for a given map *and* the same for the
+        // modifiable and unmodifiable map.
+        crossCheckOrdering(referenceEntrySet, entrySet, Map.Entry.class);
+    }
+
+    private static void testKeySet(Set<String> referenceKeySet, Set<String> keySet) {
+        // keySet should be a set of the strings "0" to "99"
+        testKeySetContents(referenceKeySet);
+        testKeySetContents(keySet);
+
+        // The ordering may be undefined for a map implementation but the ordering must be the
+        // same across iterator(), toArray() and toArray(T[]) for a given map *and* the same for the
+        // modifiable and unmodifiable map.
+        crossCheckOrdering(referenceKeySet, keySet, String.class);
+    }
+
+    private static void testKeySetContents(Set<String> keySet) {
+        // contains
+        assertTrue("should contain \"0\"", keySet.contains("0"));
+        assertTrue("should contain \"50\"", keySet.contains("50"));
+        assertTrue("should not contain \"100\"", !keySet.contains("100"));
+
+        // containsAll
+        HashSet<String> hs = new HashSet<String>();
+        hs.add("0");
+        hs.add("25");
+        hs.add("99");
+        assertTrue("Should contain set of \"0\", \"25\", and \"99\"", keySet.containsAll(hs));
+        hs.add("100");
+        assertTrue("Should not contain set of \"0\", \"25\", \"99\" and \"100\"",
+                !keySet.containsAll(hs));
+
+        // isEmpty
+        assertTrue("Should not be empty", !keySet.isEmpty());
+
+        // size
+        assertEquals("Returned wrong size.", 100, keySet.size());
+    }
+
+    private static <T> void crossCheckOrdering(Set<T> set1, Set<T> set2, Class<?> elementType) {
+        Iterator<T> set1Iterator = set1.iterator();
+        Iterator<T> set2Iterator = set2.iterator();
+
+        T[] zeroLengthArray = createArray(elementType, 0);
+        T[] set1TypedArray1 = set1.toArray(zeroLengthArray);
+        assertEquals(set1.size(), set1TypedArray1.length);
+
+        // Compare set1.iterator(), set2.iterator() and set1.toArray(new T[0])
+        int entryCount = 0;
+        while (set1Iterator.hasNext()) {
+            T set1Entry = set1Iterator.next();
+            T set2Entry = set2Iterator.next();
+
+            // Compare set1 with set2
+            assertEquals(set1Entry, set2Entry);
+
+            // Compare the iterator with the array. The arrays will be checked against each other.
+            assertEquals(set1Entry, set1TypedArray1[entryCount]);
+
+            entryCount++;
+        }
+        assertFalse(set2Iterator.hasNext());
+        assertEquals(set1.size(), entryCount);
+
+        // Compare the various arrays with each other.
+
+        // set1.toArray(new T[size])
+        T[] parameterArray1 = createArray(elementType, set1.size());
+        T[] set1TypedArray2 = set1.toArray(parameterArray1);
+        assertSame(set1TypedArray2, parameterArray1);
+        assertArrayEquals(set1TypedArray1, set1TypedArray2);
+
+        // set1.toArray()
+        Object[] set1UntypedArray = set1.toArray();
+        assertEquals(set1.size(), set1UntypedArray.length);
+        assertArrayEquals(set1TypedArray1, set1UntypedArray);
+
+        // set2.toArray(new T[0])
+        T[] set2TypedArray1 = set2.toArray(zeroLengthArray);
+        assertEquals(set1.size(), set2TypedArray1.length);
+        assertArrayEquals(set1TypedArray1, set2TypedArray1);
+
+        // set2.toArray(new T[size])
+        T[] parameterArray2 = createArray(elementType, set2.size());
+        T[] set2TypedArray2 = set1.toArray(parameterArray2);
+        assertSame(set2TypedArray2, parameterArray2);
+        assertArrayEquals(set1TypedArray1, set1TypedArray2);
+
+        // set2.toArray()
+        Object[] set2UntypedArray = set2.toArray();
+        assertArrayEquals(set1TypedArray1, set2UntypedArray);
+    }
+
+    private static <T> void assertArrayEquals(T[] array1, T[] array2) {
+        assertTrue(Arrays.equals(array1, array2));
+    }
+
+    private static <T> T[] createArray(Class<?> elementType, int size) {
+        return (T[]) Array.newInstance(elementType, size);
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_UnmodifiableMapTest.java b/support/src/test/java/tests/support/Support_UnmodifiableMapTest.java
deleted file mode 100644
index e7a1620..0000000
--- a/support/src/test/java/tests/support/Support_UnmodifiableMapTest.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package tests.support;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import junit.framework.TestCase;
-
-public class Support_UnmodifiableMapTest extends TestCase {
-
-    Map<String, Integer> map;
-
-    // must be a map containing the string keys "0"-"99" paired with the Integer
-    // values Integer(0) to Integer(99)
-
-    public Support_UnmodifiableMapTest(String p1) {
-        super(p1);
-    }
-
-    public Support_UnmodifiableMapTest(String p1, Map<String, Integer> m) {
-        super(p1);
-        map = m;
-    }
-
-    @Override
-    public void runTest() {
-        // containsKey
-        assertTrue("UnmodifiableMapTest - Should contain the key \"0\"", map
-                .containsKey("0"));
-        assertTrue("UnmodifiableMapTest - Should contain the key \"50\"", map
-                .containsKey("50"));
-        assertTrue("UnmodifiableMapTest - Should not contain the key \"100\"",
-                !map.containsKey("100"));
-
-        // containsValue
-        assertTrue("UnmodifiableMapTest - Should contain the value 0", map
-                .containsValue(new Integer(0)));
-        assertTrue("UnmodifiableMapTest - Should contain the value 50", map
-                .containsValue(new Integer(50)));
-        assertTrue("UnmodifiableMapTest - Should not contain value 100", !map
-                .containsValue(new Integer(100)));
-
-        // entrySet
-        Set<?> entrySet = map.entrySet();
-        Iterator<?> entrySetIterator = entrySet.iterator();
-        int myCounter = 0;
-        while (entrySetIterator.hasNext()) {
-            Map.Entry<?, ?> me = (Map.Entry<?, ?>) entrySetIterator.next();
-            assertTrue("UnmodifiableMapTest - Incorrect Map.Entry returned",
-                    map.get(me.getKey()).equals(me.getValue()));
-            myCounter++;
-        }
-        assertEquals("UnmodifiableMapTest - Incorrect number of map entries returned",
-                100, myCounter);
-
-        // get
-        assertTrue("UnmodifiableMapTest - getting \"0\" didn't return 0",
-                map.get("0").intValue() == 0);
-        assertTrue("UnmodifiableMapTest - getting \"50\" didn't return 0",
-                map.get("0").intValue() == 0);
-        assertNull("UnmodifiableMapTest - getting \"100\" didn't return null",
-                map.get("100"));
-
-        // isEmpty
-        assertTrue(
-                "UnmodifiableMapTest - should have returned false to isEmpty",
-                !map.isEmpty());
-
-        // keySet
-        Set<?> keySet = map.keySet();
-        t_KeySet(keySet);
-
-        // size
-        assertTrue("Size should return 100, returned: " + map.size(), map
-                .size() == 100);
-
-        // values
-        new Support_UnmodifiableCollectionTest("Unmod--from map test", map
-                .values());
-
-    }
-
-    void t_KeySet(Set<?> keySet) {
-        // keySet should be a set of the strings "0" to "99"
-
-        // contains
-        assertTrue("UnmodifiableMapTest - keySetTest - should contain \"0\"",
-                keySet.contains("0"));
-        assertTrue("UnmodifiableMapTest - keySetTest - should contain \"50\"",
-                keySet.contains("50"));
-        assertTrue(
-                "UnmodifiableMapTest - keySetTest - should not contain \"100\"",
-                !keySet.contains("100"));
-
-        // containsAll
-        HashSet<String> hs = new HashSet<String>();
-        hs.add("0");
-        hs.add("25");
-        hs.add("99");
-        assertTrue(
-                "UnmodifiableMapTest - keySetTest - should contain set of \"0\", \"25\", and \"99\"",
-                keySet.containsAll(hs));
-        hs.add("100");
-        assertTrue(
-                "UnmodifiableMapTest - keySetTest - should not contain set of \"0\", \"25\", \"99\" and \"100\"",
-                !keySet.containsAll(hs));
-
-        // isEmpty
-        assertTrue("UnmodifiableMapTest - keySetTest - should not be empty",
-                !keySet.isEmpty());
-
-        // iterator
-        Iterator<?> it = keySet.iterator();
-        while (it.hasNext()) {
-            assertTrue(
-                    "UnmodifiableMapTest - keySetTest - Iterator returned wrong values",
-                    keySet.contains(it.next()));
-        }
-
-        // size
-        assertTrue(
-                "UnmodifiableMapTest - keySetTest - returned wrong size.  Wanted 100, got: "
-                        + keySet.size(), keySet.size() == 100);
-
-        // toArray
-        Object[] objArray;
-        objArray = keySet.toArray();
-        for (int counter = 0; it.hasNext(); counter++) {
-            assertTrue(
-                    "UnmodifiableMapTest - keySetTest - toArray returned incorrect array",
-                    objArray[counter] == it.next());
-        }
-
-        // toArray (Object[])
-        objArray = new Object[100];
-        keySet.toArray(objArray);
-        for (int counter = 0; it.hasNext(); counter++) {
-            assertTrue(
-                    "UnmodifiableMapTest - keySetTest - toArray(Object) filled array incorrectly",
-                    objArray[counter] == it.next());
-        }
-    }
-
-}